python - 通过字符串中的其他字符更改多个字符

标签 python string

<分区>

我正在尝试操作一个字符串。

从字符串中提取所有元音后,我想将同一字符串中的所有“v”替换为“b”,将所有“b”替换为“v”(例如“accveioub”首先变为 ccvb,然后ccbv)。

我在交换字符时遇到问题。我最终得到了 ccvv,我想我会根据这段代码得到它。我正在考虑遍历字符串并使用 if 语句,如果索引 i 处的字符基本上保留 .equals"v"然后将其替换为 "b"和一个表示 "b"的 else 语句将其替换为 "v"和然后将字符附加或连接在一起?

这是我的代码

def Problem4():
    volString = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}
    s = "accveioub"
    chars = []
    index = 0

    #Removes all the vowels with the for loop
    for i in s:
        if i not in volString:
            chars.append(i)
    s2 = "".join(chars)
    print(s2)
    print(s2.replace("v", "b"))
    print(s2.replace("b", "v"))

>>> Problem4()
ccvb
ccbb
ccvv
>>> 

最佳答案

实际上你已经完成了一半,唯一需要注意的是当你想“交换”string时,你必须创建“临时”string 而不是直接替换。

你所做的是这样的:

ccvb 
ccbb #cannot distinguish between what was changed to b and the original b
ccvv #thus both are changed together

考虑使用 string 中不存在的字符作为第一个替换字符。比方说,我现在首先将所有 b 更改为 1:

s2 = s2.replace("b","1")
s2 = s2.replace("v","b")
s2 = s2.replace("1","v")

然后你会得到:

ccvb #original
ccv1 #replace b with 1
ccb1 #replace v with b
ccbv #replace 1 with v

这里最重要的一点是临时string的使用

关于python - 通过字符串中的其他字符更改多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810449/

相关文章:

python - 在python中按优先级对矩阵进行排序

java - 递归函数中奇怪/奇怪的行为

JavaScript:替换字符串中最后一次出现的文本

java - 修改 switch 语句内的变量以便在 switch 外部使用

python - pandas - 数据透视表到方阵

python - http请求失败后获取状态文本

python - 包含多个语句的 Try 子句

c# - 为什么字节数组的大小不等于字符串的大小?

javascript - 为什么绳子在一定的间隔内不动?

python - 将 Lmtool 合并到 PocketSphinx 中?