我正在尝试制作一个代码,只需在任何单词中给每个辅音放一个“o”,我不知道从哪里开始,我只是得到错误"TypeError: string indices must be integers, not str"
< / p>
k = list('b' + 'c' + 'd' + 'f' + 'g' + 'h' + 'j' + 'k' + 'l' + 'm' + 'n' + 'p' + 'q' + 'r' + 's' + 't' + 'v' + 'w' + 'x' + 'z')
for bok in k:
text = list(raw_input("Give a phrase to code: "))
print bok["0"]
答案 0 :(得分:2)
您正在使用print bok["0"]
,使用字符串“0”作为索引。你需要使用一个整数,所以像这样替换:
print bok[0]
我不确定我是否了解您的总体目标,但这将解决您发布此问题的错误。
答案 1 :(得分:2)
首先,数组索引是用整数完成的,而不是字符串:
>>> a = [1, 2, 3]
>>> a["0"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> a[0]
1
其次,你可以在不使用那么多+
es:
>>> 'b' + 'c' + 'd'
'bcd'
>>> 'bcd'
'bcd'
第三,您可以遍历字符串而无需将其转换为列表:
>>> for c in list("abc"):
... print c
...
a
b
c
>>> for c in "abc":
... print c
...
a
b
c
第四,迭代字符串会为您提供一个包含每个字符的字符串。您不必获取该字符串的第0个索引 - 这是相同的事情:
>>> "b"
'b'
>>> "b"[0]
'b'
>>> "b"[0] == "b"
True
答案 2 :(得分:1)
更简单的方法是使用正则表达式,例如:
import re
print re.sub('([bcdfghjklmnpqrstvwxyz])', r'o\1', 'tobias')
# otoobiaos
这会查找[]
(辅音)之间的任何内容,并将其替换为o
后跟其找到的字母。
例如,获取用户输入:
word = raw_input('Enter a word: ')
print re.sub('([bcdfghjklmnpqrstvwxyz])', r'o\1', word)