我有一个字符串:
f = open("file.txt", r)
message = f.read()
print message
>>> "To: email\ntitle: add title here\nDescription: whatever here\n"
我可以通过以下方式拆分字符串:
f_email, f_title, f_description, blank = message.split('\n')
但是当我收到这样的消息时,问题就出现了:
"To: email\ntitle: add title here\nDescription: first line\nSecond line\nthirdline\n"
当我拆分字符串时,它也会拆分描述。我试过:
f_email, f_title, f_description, blank = message.split('\n',4)
但这显然会返回 ValueError,因为它拆分了更多的 4\n。
有什么建议吗?
请您参考如下方法:
当您运行 .split('\n') 时,您会返回一个列表。您可以将它们从列表中拉出,而不是在拆分时分配变量:
tokens = message.split('\n')
f_email = tokens[0]
f_title = tokens[1]
f_description = tokens[2]
可以通过检查列表的大小来降低它的脆弱性。如果您知道它至少需要三个元素,您可以:
assert(len(tokens)>=3)
解决这个问题的另一种方法是将事情包装在 try/except block 中:
tokens = message.split('\n')
try:
f_description = tokens[2]
except:
f_description = None
这样您就可以按照自己喜欢的方式处理更短列表的情况!
