Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Don';我不明白为什么string.index(“word”)是';行不通_Python - Fatal编程技术网

Python Don';我不明白为什么string.index(“word”)是';行不通

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

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:未找到子字符串
。你能帮帮我吗?

你的第一行没有这个字符:

'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:没问题,很高兴能帮上忙:-)