1

我正在使用 Python 有一个包含 2 列的列表,中间有很多空白,例如:

TEXT           123.34645
TEXT            13.35372
TEXT             0.55532
TEXT            11.60538

我希望我的 python 代码获取右边的数字。

起初我是这样做的,一行一行地抓取一行 [15:24] 或其他什么 - 但后来我意识到有些数字的长度不同,所以这行不通。

请问这样做的正确方法是什么?

4

3 回答 3

5

只需使用str.split()

>>> 'TEXT           123.34645\n'.split()
['TEXT', '123.34645']

在任意宽度的空格上拆分的默认形式.split(),忽略前导和尾随空格。在上面的例子中,\n行尾的 被忽略了。

如果您的文本也包含空格,请str.rsplit()限制使用:

>>> 'TEXT WITH WHITESPACE           123.34645'.rsplit(None, 1)
['TEXT WITH WHITESPACE', '123.34645']

None告诉.rsplit()(或.split())在可变宽度空白处拆分,并且1是要进行的最大拆分数。

于 2013-05-12T13:07:48.780 回答
2

.split()是答案。

因此,当您从文本文件中读取行时,请将该split()方法应用于每一行。

In [1]: f = open('test.txt')   # test.txt contains the text indicated in your question

In [2]: for line in f:
   ...:     result = line.split()
   ...:     print result
   ...:
['TEXT', '123.34645']
['TEXT', '13.35372']
['TEXT', '0.55532']
['TEXT', '11.60538']
于 2013-05-12T13:08:28.677 回答
1
import re 
with open('file.txt') as f:
    for line in f:
        text, number = re.search(r'([\w\s]+)\s+([\d.]+)',line).groups()
        print(number)

生产

123.34645
13.35372
0.55532
11.60538
>>> 
于 2013-05-12T13:09:05.460 回答