Python: three different delimiters between columns, column to list, quickest way Python:三种不同的列分隔符,列转列表,最快的方法

2024-04-26 21:04:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个不同的分隔符(第一个是数字的空格,第二个是数字的3个空格,最后一列是空格,然后是数字的制表符),我希望能够生成一个列表,其中包含每个列的顺序值。在

 8000.5   16745     0.1257
 8001.0   16745     0.1242
 8001.5   16745     0.1565
 8002.0   16745     0.1595
 8002.5   16745     0.1093
 8003.0   16745     0.1644

我试过一些关于re的东西。在转换成一个字符串后,我想看看我是否可以这样解析它,但它似乎有点冗长的转换,我想知道是否有人知道一个更快的方法。理想的输出是

^{pr2}$

谢谢!在


Tags: 方法字符串re列表顺序数字制表符空格
3条回答

使用split()

strs = """ 8000.5   16745     0.1257
 8001.0   16745     0.1242
 8001.5   16745     0.1565
 8002.0   16745     0.1595
 8002.5   16745     0.1093
 8003.0   16745     0.1644"""

list_col= map(list,zip(*(map(float,x.split()) for x in strs.split('\n'))))

print(list(list_col))

输出:列列表

^{pr2}$
txt = """ 8000.5   16745     0.1257
 8001.0   16745     0.1242
 8001.5   16745     0.1565
 8002.0   16745     0.1595
 8002.5   16745     0.1093
 8003.0   16745     0.1644 """

data = zip(*((float(s) for s in row.split()) for row in txt.split('\n')))

结果

^{pr2}$

只需使用一个.split();它将使用任意数量的空格并在其上拆分(完全忽略前导空格和尾随空格):

>>> ex = ' 8000.5   16745     0.1257'
>>> ex.split()
['8000.5', '16745', '0.1257']

如果需要浮点而不是字符串,只需使用mapfloat()应用到每个值:

^{pr2}$

相关问题 更多 >