2013-05-12 64 views
1

我使用Python的數字有2列有很多白色空間之間的列表,例如:選擇不同長度

TEXT   123.34645 
TEXT   13.35372 
TEXT    0.55532 
TEXT   11.60538 

我希望我的Python代碼抓住右邊的數字。

起初我是通過一行一行地抓取行[15:24]或其他 - 但後來我意識到一些數字是不同的長度,所以這是行不通的。

這樣做的正確方法是什麼?

回答

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是分裂做出的最大數量。

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'] 
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 
>>> 
+0

矯枉過正這 – jamylak 2013-05-12 13:25:48

+0

@jamylak你說的沒錯...'.rsplit()'快 – HennyH 2013-05-12 13:31:29