[英]Python Regex to Split a line into 4 parts
我如何使用正則表達式將每一行拆分如下
3 Name Test 50.5 -
2 Name-Test - 3.12
1 Name Test Test 50.5 -
2 Name Test 32 213.12
3 Name Test 50.5 -
2 Name Test - 50.12
1 Name Test 50.5 -
2 Name Test - -
將分為:
3 | Name Test | 50.5 | -
2 | Name-Test | - | 3.12
1 | Name Test Test | 50.5 | -
2 | Name Test | 32 | 213.12
3 | Name Test | 50.5 | -
2 | Name Test | - | 50.12
1 | Name Test | 50.5 | -
2 | Name Test | - | -
我得到的最遠的是: re.compile('(\\d+) (.+) (\\w+.\\w+)')
無論哪里|
符號是需要分割的地方...
好的,這是另一種方式。 這是針對特定用例的“拆分”,不涉及正則表達式。 關鍵思想是第二列(名稱)中可以有空格,而所有其他列都具有明確定義的格式。 因此,想法是從左右分開,其余部分(名稱列)保持不變:
def mysplit(line):
r = line.rsplit(' ', 2)
l = r[0].split(' ', 1)
print " | ".join(l + r[i:])
當我在IPython中使用/tmp/lines.txt
的輸入運行以下代碼段時:
for l in open('/tmp/lines.txt'):
mysplit(l.strip())
結果是:
3 | Name Test | 50.5 | - 2 | Name-Test | - | 3.12 1 | Name Test Test | 50.5 | - 2 | Name Test | 32 | 213.12 3 | Name Test | 50.5 | - 2 | Name Test | - | 50.12 1 | Name Test | 50.5 | - 2 | Name Test | - | -
要匹配的可能適當的正則表達式為:
^(\d+) (.+) (\d+(\.\d+)?|-) (\d+(\.\d+)?|-)$
用法示例:
>>> re.match(r'(\d+) (.+) (\d+(\.\d+)?|-) (\d+(\.\d+)?|-)$', '3 Name Test 50.5 -').groups()
('3', 'Name Test', '50.5', '-')
試試這個: ^(\\d+) (.+) (\\d+\\.\\d+|-|\\d+) (\\d+\\.\\d+|-|\\d+)$
這應該與您所有的示例字符串匹配。
一切順利
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.