import fileinput
for line in fileinput.input("emaillist.txt"):
line=line.rstrip('\n\r ')
line= line.split('=')
newlin = line[1]
为什么这无效?我试图打破令人讨厌的文本行并从中做出一些有用的东西? split()函数是否产生一个列表,你可以通过列表[x]?
来解决感谢!!!!
Traceback (most recent call last):
File "./clean.py", line 8, in <module>
newlin = line[1]
IndexError: list index out of range
答案 0 :(得分:4)
如果line.partition('=')[2]
有时缺失,您可以使用'='
:
>>> 'a = b'.partition('=')
('a ', '=', ' b')
>>> 'a'.partition('=')
('a', '', '')
将其与split()
:
>>> 'a = b'.split('=')
['a ', ' b']
>>> 'a'.split('=')
['a']
答案 1 :(得分:1)
split()函数是否产生一个列表,你可以通过list [x]?
来解决
是。但是,如果列表只有一个元素,那么除了0
之外,你不能用非负数作为索引。
>>> 'foo'.split('=')
['foo']
答案 2 :(得分: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...
或者,在1行([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']