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', '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: substring not found
。你能救我吗?
答案 0 :(得分:2)
你的第一行没有这个角色:
'Viganello\n'
第二个也没有:
'Monday\n'
只有从第三行开始才会出现这个角色:
'06 | 48\n'
我怀疑你想要在那个角色上划分你的线条;不要使用str.index()
;您可以使用str.split()
代替;它具有额外的优点,即使角色不在一行中也能工作。使用:
parts = [part.strip() for part in line.split('|')]
并且您将获得输入行中的元素列表,保留在|
字符上。该列表可能只包含一个元素,但这无关紧要。
如果您确实必须拥有|
字符的索引,则可以使用str.find()
并测试-1
以查看其是否缺失,或使用try..except
赶上IndexError
:
a = line.find('|')
if a == -1:
# oops, no such character
或
try:
a = line.index('|')
except IndexError:
# oops, no such character
答案 1 :(得分:2)
你的一些字符串中没有|
,因此例外。我建议使用line.find()
代替line.index()
,并检查-1
的返回值。
答案 2 :(得分:0)
你的第一行:“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("|"))