【发布时间】:2019-11-29 02:45:02
【问题描述】:
我有以下数据,我无法更改:
data = """
-5,-2 -52.565
-5,-1 -48.751
-5, 0 -47.498
-5, 1 -48.751 -
-5, 2 -52.565
"""
我想将这些列分成两个列表,即:
list1 = ['-5,-2','-5,-1','-5, 0','-5, 1','-5, 2']
list2 = ['-52.565,'-48.751','-47.498','-48.751','-52.565']
现在,我有兴趣正确分割每一行:
lines = [l for l in s.splitlines()]
print(lines[2].split())
print(lines[3].split())
['-5,-1', '-48.751']
['-5,', '0', '-47.498]
您可以看到 line[3] 没有正确拆分,因为 '-5' 和 '0' 之间有一个空格。为了解决这个问题,我尝试了以下方法(基于python split a string with at least 2 whitespaces):
import re
print(re.split(r'\s{2,}', lines[3]))
第一列条目 '-5, 0' 成功,但它还在末尾添加了一个空列表条目:
['-5, 0', '-47.498', '']
我该如何解决这个问题?也许有更好的分割方法?
编辑:
如果我使用
print(re.split(r'\s{2,}', lines[3], maxsplit = 1))
我明白了:
['-5, 0', '-47.498 ']
【问题讨论】:
-
@Arthur.V 啊,这就是我要问你的。好的,会试试的。 :)
-
第二个数字后面有空格,这就是为什么你有空字符串。您可以使用
.strip()删除数字前后的空格。 -
@mx0 是的,但很遗憾,我无法更改数据。 :(
-
只保留您使用
re.split获得的列表的前两项...
标签: python python-3.x string list split