2012-08-22 57 views
0

我已經費盡我的大腦如何做到以下幾點:Python的重新功能

如果我有數據,如"003 HELLO, banana apple,xyz 004 HELLI, pear peach,lmn" 我有一個整體全面的文件這樣行這需要分成的帶刺:

003  HELLO, banana apple,xyz 
004  HELLI, pear peach,lmn 

要我做的是下面的第二個逗號,因爲這字後分割線順理成章的事情是,始終貫穿一路的模式。

當然,必須有一種方法可以用re函數來做到這一點。

任何想法如何做到這一點?

非常感謝大家

+0

你想從每一行中提取什麼? – Blender

回答

0

您能更具體地說明您期待的結果嗎?如果您嘗試將一堆行分割成列表,則可以始終使用.split('\n')

+0

這樣的問題應該可以是評論,而不是答案。 – DSM

+0

@DSM我同意你的看法,但實際上它是一個答案中的問題。 :b –

+0

我想過了,但它有一個答案。灰色區域... –

0

遍歷整個文件,你可以這樣做:

lines = [] 

with open('file.txt', 'r') as handle: 
    for line in handle: 
    lines.append(line.split(',')[-1].strip()) 

print lines 

我有點困惑,你想從文件中提取什麼,所以如果被澄清我的答案可能會失效。

0

也許這

import re 
result = re.findall(["[^,\s]*,[^,]*,\S*", data) 

例如

re.findall([ 「[^ \ s]的,[^,],\ S *」, 「003 HELLO,banana apple,xyz 004 HELLI,pear peach,lmn」)
['003 HELLO,banana apple,xyz','004 HELLI,pear peach,lmn']

0

是的,您可以使用正則表達式來提取數字。這裏有一個例子:

import re 

s = '003 HELLO, banana apple,xyz' 

m = re.match(r'^(\d+) ', s) 
if m: 
    digits = m.group(1) 
    value = int(digits) 
    print "{} : `{}`".format(value, s[len(digits):].strip()) 
else: 
    print "Invalid format" 

正則表達式看起來像^(\d+),可以將它解釋說:

  • ^
  • 一組(...)
  • 一個數字\d
  • 的開始.. 。重複1次以上+
  • a space

後面的匹配組的值(即,該數字)使用m.group(1)提取。