[英]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.