[英]Regular Expression in Python to add Space in matching Line
我有一個文本文件,其中一些行包含如下數據。 我想通過在開頭添加更多空間來替換與這些模式匹配的行(即,目前這些行有 14 個空間,我想將其設為 34)。
我不能只將 14 個空格替換為 34 個,因為還有其他行也有 14 個空格但不匹配以下模式。
9
1P
PKC
ABC1
1BC1C
ZBC12X
A4C12XZ
H4C12XZQ
94C12XZQQ
Q4C12XZQQT
A4C12XZQQTY
我正在使用所有 11 個單獨的代碼來搜索這 11 個模式,如下所示:
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
下面是我正在使用的 Python 代碼。
import re
input_file = open("1.txt", "r")
for line in input_file:
if re.match('[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$', line):
print (line)
我現在需要有關如何替換文本以低於 output 的指導。 我可以使用 re.Sub ,但是我如何才能添加空格而不替換原始行中的其他字符,該字符應該僅用於匹配模式。
Output:
9
1P
PKC
ABC1
1BC1C
ZBC12X
A4C12XZ
H4C12XZQ
94C12XZQQ
Q4C12XZQQT
A4C12XZQQTY
我建議使用以下正則表達式: https://regex101.com/r/6crgHK/1
然后,您的替換模式將是:
import re
input_file = open("1.txt", "r")
pattern = re.compile(r'\s+([\dA-Z]+)$')
for line in input_file:
if re.match(pattern, line):
line = re.sub(pattern, r'34spaces\1', line)
print(line)
當然,您需要用實際的 34 個空格替換34spaces
部分。 :)
> import re
>
> input_file = open("1.txt", "r") space = ' ' * 14 for line in input file:
> if re.match('[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$',line):
> print (space + line)
這可能會奏效。 我只是在與您的查詢匹配的任何行前面加上 14 個空格,然后將空格和您的行連接起來以打印 14 個空格,然后是您的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.