python 如何匹配列表中某个单词_Python如何匹配文本文件中多行中的特定单词/数字,并将它们存储在单独的列表中...
解釋您想要的正則表達式及其工作原理
以上所有的答案都有效,但是如果你想真正理解這個問題,我認為這可能是一個很好的方法。首先你要想一想你想找到什么。在
對于前三個,您希望匹配類似name space digits的模式。它的正則表達式是name \d+,\d表示一個數字字符,+表示一個或多個字符。在
因此,對于ip sla,您需要一個regex,如:ip sla \d+
但是,您只對數字感興趣,因此可以使用括號將數字指定為自己的組:
^{pr2}$
最后,在python中,反斜杠(\)用于轉義前面的字符,因此python要識別反斜杠,我們需要其中兩個反斜杠,因此在python代碼中,您應該:pattern = "ip sla (\\d+)"
如果您看一下the docs,re模塊有一個函數re.findall,它使您不必將文件拆分成行。在
re.findall(pattern, string)將返回與模式匹配的字符串列表,或者如果只存在一個組(就像我們的情況一樣,其中一個組是\d+),它將返回該組。在
這意味著re.findall("ip sla (\\d+)", fileText)
將返回ip sla值的數字(字符串)列表。在
也可以應用于mpid和vlan。在
但是,你想要的字母和數字要匹配。在regex中,這些字符被稱為單詞字符,為了匹配單詞字符,我們可以使用\w。我們再次使用+修飾符來匹配一個或多個單詞字符。這給我們留下了pattern = "tag (\\w+)"
策略:1. Read file into string
2. Construct and execute regex searches for each pattern
3. Iterate through each list of results
4. Append each result to the correct array
代碼:import re
myFile = open("regex.txt","r") # open file for reading
myFileData = myFile.read() # read file into a string
myFile.close() # close file now that we're done
# create lists for each thing you're looking for
ipsla = []
mpid = []
vlan = []
tag = []
# finds a pattern like "ip sla "
results = re.findall("ip sla (\\d+)", myFileData)
for result in results:
# add the number (as an int) to your ipsla list
ipsla.append(int(result))
# rinse & repeat :)
results = re.findall("mpid (\\d+)", myFileData)
for result in results:
mpid.append(int(result))
results = re.findall("vlan (\\d+)", myFileData)
for result in results:
vlan.append(int(result))
results = re.findall("tag (\\w+)", myFileData)
for result in results:
if result not in tag:
tag.append(result)
print ipsla
print mpid
print vlan
print tag
總結
以上是生活随笔為你收集整理的python 如何匹配列表中某个单词_Python如何匹配文本文件中多行中的特定单词/数字,并将它们存储在单独的列表中...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps怎么清屏_PS:oracle恢复删除
- 下一篇: mysql踢掉登录用户_centos 强