Python TypeError:字符串索引必须是整数,而不是str 4

Python TypeError:字符串索引必须是整数,而不是str 4,python,string,int,Python,String,Int,我试图制作一个代码,在给定的任何单词的每个辅音前面加上一个“o”,我不知道从这里可以走到哪里,我只得到一个错误“TypeError:字符串索引必须是整数,而不是str” 您正在使用print bok[“0”],使用字符串“0”作为索引。您需要使用整数,因此请按如下方式替换: print bok[0] 我不确定我是否理解您在这里的总体目标,但这将解决您发布此问题的错误 您正在使用print bok[“0”],使用字符串“0”作为索引。您需要使用整数,因此请按如下方式替换: print b

我试图制作一个代码,在给定的任何单词的每个辅音前面加上一个“o”,我不知道从这里可以走到哪里,我只得到一个错误
“TypeError:字符串索引必须是整数,而不是str”


您正在使用
print bok[“0”]
,使用字符串“0”作为索引。您需要使用整数,因此请按如下方式替换:

  print bok[0]

我不确定我是否理解您在这里的总体目标,但这将解决您发布此问题的错误

您正在使用
print bok[“0”]
,使用字符串“0”作为索引。您需要使用整数,因此请按如下方式替换:

  print bok[0]

我不确定我是否理解您在这里的总体目标,但这将解决您发布此问题的错误

首先,数组索引是用整数而不是字符串完成的:

>>> 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
第三,您可以迭代字符串,而无需将其转换为列表:

>>> 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

首先,数组索引是使用整数而不是字符串进行的:

>>> 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
第三,您可以迭代字符串,而无需将其转换为列表:

>>> 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

更简单的方法是使用正则表达式,例如:

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)

更简单的方法是使用正则表达式,例如:

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)

您可以逐个字符迭代字符串
k='bcd…z'
就足够了(出于同样的原因,
k=list('bcd…z')
如果您真的想要一个包含25个一个字符的字符串的列表,就可以工作了)
k='bcd…z'
就足够了(出于同样的原因,
k=list('bcd…z')
如果您真的想要一个包含25个一个字符字符串的列表,那么它就可以工作了)。这当然解决了我的问题!但是,如果我希望用户能够写出他/她想要的任何单词,那么这个单词在每个辅音前面都有一个“o”,比如“Otobiaos”,我该怎么做呢?我知道我至少必须使用原始输入。@Tobias yup-使用类似于
word=raw\u input('Enter word:')的提示将
word
而不是文本
'Tobias'
传递到函数中谢谢!这帮了大忙!还有一个问题,如果我想让“o”出现在辅音后面,我该怎么做?我还使用同样的功能吗?@Tobias是的。。。
\1
表示找到的字符。。。
o
只是一个文字。。。我把剩下的交给你整理:)这当然解决了我的问题!但是,如果我希望用户能够写出他/她想要的任何单词,那么这个单词在每个辅音前面都有一个“o”,比如“Otobiaos”,我该怎么做呢?我知道我至少必须使用原始输入。@Tobias yup-使用类似于
word=raw\u input('Enter word:')的提示将
word
而不是文本
'Tobias'
传递到函数中谢谢!这帮了大忙!还有一个问题,如果我想让“o”出现在辅音后面,我该怎么做?我还使用同样的功能吗?@Tobias是的。。。
\1
表示找到的字符。。。
o
只是一个文字。。。我把剩下的交给你整理:)