Python Don';我不明白为什么string.index(“word”)是';行不通
python中的方法Python Don';我不明白为什么string.index(“word”)是';行不通,python,Python,python中的方法.index(“word”)是否可能不起作用?我有以下清单: ['Viganello\n', 'Monday\n', '06 | 48\n', '06 | 58\n', '07 | 08\n', '07 | 18\n', '07 | 28\n', '07 | 38\n', '07 | 48\n', '07 | 58\n', '08 | 08\n', '08 | 18\n', '08 | 28\n', '08 | 38\n', '08 | 48\n', '08 | 58\n
.index(“word”)
是否可能不起作用?我有以下清单:
['Viganello\n', 'Monday\n', '06 | 48\n', '06 | 58\n', '07 | 08\n', '07 | 18\n',
'07 | 28\n', '07 | 38\n', '07 | 48\n', '07 | 58\n', '08 | 08\n', '08 | 18\n',
'08 | 28\n', '08 | 38\n', '08 | 48\n', '08 | 58\n', '09 | 08\n', '09 | 18\n',
'09 | 28\n', '09 | 38\n', '09 | 53\n', '10 | 08\n', '10 | 23\n', '10 | 38\n',
'10 | 53\n'
字符串列表。然后我打印每个字符串,并请求字符“|”
的索引。为什么python找不到这个?这是我的密码:
f = open("Bus 5 Viganello.txt", 'r')
lines = f.readlines()
d = {}
for line in lines:
line = line.replace('\n','')
a = line.index("|")
错误为
ValueError:未找到子字符串
。你能帮帮我吗?你的第一行没有这个字符:
'Viganello\n'
第二个也没有:
'Monday\n'
只有从第三行开始,该字符才会出现:
'06 | 48\n'
我怀疑你可能想在这个角色上分裂你的台词;不要使用str.index()
;您可以改用str.split()
;它还有一个额外的优点,即即使字符不在一行中也可以工作。使用:
parts = [part.strip() for part in line.split('|')]
您将从输入行获得元素列表,按
字符分割,保证。该列表可能只包含一个元素,但这并不重要
如果您确实必须拥有|
字符的索引,则可以使用str.find()
并测试-1
以查看它是否丢失,或者使用try..except
捕获索引器
:
a = line.find('|')
if a == -1:
# oops, no such character
或
您的第一行没有该字符:
'Viganello\n'
第二个也没有:
'Monday\n'
只有从第三行开始,该字符才会出现:
'06 | 48\n'
我怀疑你可能想在这个角色上分裂你的台词;不要使用str.index()
;您可以改用str.split()
;它还有一个额外的优点,即即使字符不在一行中也可以工作。使用:
parts = [part.strip() for part in line.split('|')]
您将从输入行获得元素列表,按
字符分割,保证。该列表可能只包含一个元素,但这并不重要
如果您确实必须拥有|
字符的索引,则可以使用str.find()
并测试-1
以查看它是否丢失,或者使用try..except
捕获索引器
:
a = line.find('|')
if a == -1:
# oops, no such character
或
您的某些字符串中没有
|
,因此出现异常。我建议使用代替,并检查-1
的返回值。您的一些字符串中没有|
,因此出现异常。我建议使用代替,并检查-1
的返回值。您的第一行:“Viganello\n”没有“|”,并引发您得到的值错误
在获取索引之前检查它:
for line in lines:
if "|" in line:
print(line.index("|"))
或者使用try语句捕获ValueError
或者更简单的方法是使用str.find()而不是str.index(),这不会引发ValueError:
for line in lines:
print(line.find("|"))
您的第一行:“Viganello\n”没有“|”,并引发您得到的ValueError
在获取索引之前检查它:
for line in lines:
if "|" in line:
print(line.index("|"))
或者使用try语句捕获ValueError
或者更简单的方法是使用str.find()而不是str.index(),这不会引发ValueError:
for line in lines:
print(line.find("|"))
一般来说,如果问题是您的代码是否因为Python有一些尚未发现的隐藏bug而无法工作,那么答案是“否”。否。问题是“在我的情况下,为什么这部分不起作用?”这句话“python中的method.index(“word”)是否可能不起作用?”表明您认为问题可能出在python上,而不是您的代码。抱歉,如果我误解了,但是初学者天真地认为他们的代码一定很好,问题一定是Python,或者他们正在使用的编译器等。一般来说,如果问题是您的代码是否因为Python有一些尚未发现的隐藏bug而无法工作,那么答案是“否”。否。问题是“在我的情况下,为什么这部分不起作用?”这句话“python中的method.index(“word”)是否可能不起作用?”表明您认为问题可能出在python上,而不是您的代码。如果我误解了,很抱歉,但是初学者天真地认为他们的代码一定很好,问题一定出在Python上,或者他们正在使用的编译器上,等等,这在初学者中并不少见。说得好。也许这是我项目的又一步。谢谢Manaaaaah对不起,伙计。我的联系中断了,我没有接受你的回答:(@pp94:没问题,很高兴能帮上忙:-)好的。说得好。也许这是我项目的又一步。谢谢Manaaaaah对不起,伙计。我的关系不好,我没有接受你的回答:(@pp94:没问题,很高兴能帮上忙:-)