我嘗試使用 python 常規 exp 從我的文本檔案中提取“起點”匹配。
這并沒有顯示我想要的結果。我是一個非常初學者,并試圖從我的文本檔案中提取字串“起點”的所有匹配項。請幫助。
import re
with open('report.txt') as file:
f = file.readlines()
# pattern=(r'(Startpoint\:*\s[a-zA-Z]\w*)')
pattern=(r'([^S..t$]\:*\s[A-Z]\W*)')
print(pattern)
mat=re.match(r'([^S..t$]\:*\s[A-Z]\W*)',f,re.M|re.I)
print(mat)
另外,我已經嘗試過了,因為我使用了 re.sub,所以它洗掉了我的字串 'S'
with open('report.txt') as file:
text=file.read()
f=file.readlines()
pat=re.sub(r'([^S..t$]:*\s[A-Z]\W*)'," ",text)#for replacing
print(pat)
我已經包含了一些資訊。從我這里的文字,
exintf_max.txt:3870: Startpoint: EXINTF_DATA0
exintf_max.txt:3920: Startpoint: EXINTF_DATA9
exintf_max.txt:3972: Startpoint: EXINTF_DATA11
exintf_max.txt:4022: Startpoint: top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_1_select_enable_reg
exintf_max.txt:4054: Startpoint: EXINTF_DATA15
exintf_max.txt:4105: Startpoint: top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_0_select_enable_reg
exintf_max.txt:4137: Startpoint: EXINTF_DATA1
exintf_max.txt:4189: Startpoint: EXINTF_DATA6
exintf_max.txt:4241: Startpoint: EXINTF_DATA10
exintf_max.txt:4290: Startpoint: EXINTF_DATA10
exintf_max.txt:4341: Startpoint: top/soc/xintf_cntrl/lv_temp_xintf_rg_XWR_reg
我可以通過 grep 命令獲得上述資訊,我想使用 python 腳本獲得相同的資訊。
請幫助我。我是一個非常初學者。
uj5u.com熱心網友回復:
只需檢查該文本的一行...,然后您就可以在回圈中使用它。
import re
# txt = "exintf_max.txt:4341: Startpoint: top/soc/xintf_cntrl/lv_temp_xintf_rg_XWR_reg"
txt = "exintf_max.txt:4290: Startpoint: EXINTF_DATA10"
m = re.match("[\w_] .\w :(\d ):\s?(Startpoint):\s?(.*)",txt)
if m:
print(m.groups())
print(m.group(3))
uj5u.com熱心網友回復:
要在 Python 中獲取字串 Startpoint 的值,您可以使用:
^[^:\n]*:\d :\s*Startpoint:\s*(. )
解釋
^字串的開始[^:\n]*可選擇匹配除:換行符以外的任何字符:\d :匹配冒號之間的 1 個數字\s*匹配可選的空白字符Startpoint:從字面上匹配\s*(. )匹配可選的空白字符
如果要匹配沒有換行符的空格,可以更改\s為[^\S\n]
正則運算式演示
示例代碼
import re
with open('report.txt') as file:
f = file.read()
pattern = r"^[^:\n]*:\d :\s*Startpoint:\s*(. )"
print(re.findall(pattern, f, re.M))
輸出
[
'EXINTF_DATA0',
'EXINTF_DATA9',
'EXINTF_DATA11',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_1_select_enable_reg',
'EXINTF_DATA15',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_0_select_enable_reg',
'EXINTF_DATA1',
'EXINTF_DATA6',
'EXINTF_DATA10',
'EXINTF_DATA10',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_XWR_reg'
]
uj5u.com熱心網友回復:
如果你想抓住之后發生的事情,Startpoint:你可以這樣做:
import re
from pathlib import Path
path = Path("report.txt")
pat = re.compile(r'.*Startpoint:\s*(\S*)')
pat.findall(path.read_text())
這基本上超越了任何比賽,Startpoint:然后得到它之后的任何不是空格的東西。
這輸出:
['EXINTF_DATA0', 'EXINTF_DATA9', 'EXINTF_DATA11',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_1_select_enable_reg', 'EXINTF_DATA15',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_chip_0_select_enable_reg',
'EXINTF_DATA1', 'EXINTF_DATA6', 'EXINTF_DATA10', 'EXINTF_DATA10',
'top/soc/xintf_cntrl/lv_temp_xintf_rg_XWR_reg']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479798.html
上一篇:REGEX:只接受字母數字字符和空格,運算式開頭或結尾的空格除外
下一篇:如何決議給定的鍵值引數字串?
