簡體   English   中英

正則表達式python 4個整數,后跟一個空格

[英]Regular expression python 4 integers followed by a space

我正在嘗試每次在ht efile的一行上正好有4個整數和空格的情況下拆分文件。 我想我快到了(查看所有問題和示例)。 認為我需要最后一推。 誰能幫我。

該腳本會拆分以4個整數開頭的所有行。 它只需要在只有4個整數且不超過4個整數時進行拆分。

import re
file = open('test.txt', 'r')

嘗試1

for x in file.read().split(re.match(r"[0-9]{4}\s", file.readline())):
       print (x)

試試2

for x in file.read().split(re.match(r"[0-9][0-9][0-9][0-9]\s", file.readline())):
       print (x)

試試3

for x in re.split(r"[0-9]{4}\s", file.read()):
    print (x)

樣本輸入

1020                                                                                                                                                                                                                                                            
200123242151111231                                 bla             bla                                       bla
200123331231231441                                 bla             bla                                       bla
1030
200123242151111231                                 bla             bla                                       bla
200123331231231441                                 bla             bla                                       bla

希望輸出的是上述內容,分為:

200123242151111231                                 bla             bla                                       bla
200123331231231441                                 bla             bla                                       bla

200123242151111231                                 bla             bla                                       bla
200123331231231441                                 bla             bla                                       bla
re.match(r"[0-9]{4}\s", file.readline())

這將讀取文件的一行,並將正則表達式與此文件進行匹配。 .split(...)然后使用該結果作為靜態定界符來分割整個文件。 這與您要實現的目標無關。

(實際上甚至沒有這樣做,因為已經讀取了整個文件,但這不是重點)

也許您正在考慮做類似.split(re.compile(...))事情? 無論如何, str.split都不處理正則表達式。

嘗試re.split(r"\\b[0-9]{4}\\s+", file.read())將文件分割成4位數字。 \\b表示“單詞邊界”,並防止其拆分為僅4個數字的數字,這些數字只是較長數字的結尾。 請注意,如果文件以4位數字開頭,則第一部分為空。

您使用readline讀取文件,並逐行讀取文件,並在換行符處拆分文件。

如果文件不是很大,可以立即讀取,例如

with open(file_path, 'r') as file:
    content = file.read()

(請參閱此答案

然后應用正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM