Python字符串拆分时IndexError错误
import fileinput
for line in fileinput.input("emaillist.txt"):
line=line.rstrip('\n\r ')
line= line.split('=')
newlin = line[1]
为什么这个不合法呢?我想把那行看起来很糟糕的文字拆分开,做点有用的东西。split()函数不是会产生一个列表吗?我们可以通过list[x]来访问这个列表的内容吗?
谢谢!!!!
Traceback (most recent call last):
File "./clean.py", line 8, in <module>
newlin = line[1]
IndexError: list index out of range
3 个回答
0
首先,试着检查一下这行文本被分成了多少部分:
import fileinput
for line in fileinput.input("emaillist.txt"):
line = line.rstrip('\n\r ').split('=')
if len(line) > 1:
newline = line[1]
# ...
else:
# do something else...
或者,你可以用一行代码来实现([line.rstrip('\n\r ').split('=')[1] for line in fileinput.input("emaillist.txt") if len(line.rstrip('\n\r ').split('=')) > 1]
):
emaillist.txt 文件内容:
Email1=123@bob.com
email2=abc@123.com
emails = [line.rstrip('\n\r ').split('=')[1] for line in fileinput.input("emaillist.txt") if len(line.rstrip('\n\r ').split('=')) > 1]
print emails
['123@bob.com', 'abc@123.com']
1
split()函数不是会生成一个列表吗?你可以通过list[x]来访问它的元素吗?
没错。但是如果这个列表只有一个元素,那你只能用0
来访问它,其他的非负数都不行。
>>> 'foo'.split('=')
['foo']
4
如果有时候字符串中缺少'='
,你可以使用line.partition('=')[2]
来处理。
>>> 'a = b'.partition('=')
('a ', '=', ' b')
>>> 'a'.partition('=')
('a', '', '')
我们可以把它和split()
方法进行对比:
>>> 'a = b'.split('=')
['a ', ' b']
>>> 'a'.split('=')
['a']