更改字母p的所有辅音

时间:2018-11-09 23:01:38

标签: python python-3.x

我需要用字母p代替一个句子的所有辅音。

我已经在下面尝试了这段代码,但是很遗憾,这无法正常工作,我不习惯此功能(str.replace()),而我正在开始python课程。

x=str(input())
y=x.split()
cons="bcdfghjklmnpqrstvwxyz"
if cons in y:
    x.replace(cons,"p")
    print(y)

帮助。

4 个答案:

答案 0 :(得分:0)

您需要做的是循环遍历cons变量中的每个字母,然后尝试替换它。我应该指出,str.replace()方法无法就地工作,因此您必须将结果分配回x

...
for c in cons:
    x = x.replace(c, 'p')

您说您是Python的新手。在上面的代码中,for循环将遍历字符串中的每个字母,并且在每个“迭代”中,将变量c设置为字符串中的下一个字母。

答案 1 :(得分:0)

if cons in y测试cons中的整个字符串是否为y的元素之一。但是y的元素都只是单个字符,而不是长字符串。

您需要遍历y中的每个字符,然后测试该字符是否在cons中。

for index, letter in enumerate(y):
    if letter in cons:
        y[index] = 'p'
x = "".join(y)
print(x)

或者您也可以循环cons并替换x中的每个字母。您需要将x.replace的结果分配回x; Python中的字符串是不可变的,因此它将返回一个新字符串,而不会修改原始字符串。

for letter in cons:
    x = x.replace(letter, "p")
print(x)

您还可以使用正则表达式一步完成整个事情:

import re
x = re.replace(r'[bcdfghjklmnpqrstvwxyz]', 'p', x)
print(x)

顺便说一句,您不需要写str(input())input()始终在Python 3中返回字符串。

答案 2 :(得分:0)

为什么在每个循环中打印y,您甚至都不会触摸y

y完全独立于x。当您执行y=x.split()时,将创建一个新列表,并由y引用。 xy之间将不再有关联。

此外,cons in y将测试cons中是否包含整个y字符串。

您可以轻松得多,无需创建yreplace可以直接对您的字符串进行操作。

x = input()
cons = "bcdfghjklmnpqrstvwxyz"
for con in cons:
    x = x.replace(con, "p")
    print(x)

答案 3 :(得分:0)

您只需在字符串中找到辅音的出现,然后将其替换为p。遍历辅音列表并运行replace。如果字符串中存在辅音,它将替换它。

x = str(input())
cons="bcdfghjklmnpqrstvwxyz"
for elem in cons:
    x = x.replace(elem, p)
print(x)