如何解决使用重新匹配,如何从文本文件中搜索并获取某些数据?
我用过re和match来从文本文件中提取某些数据。 但是我在尝试使用类似技术来获取特定数据时遇到了问题。继续卡住。因此,发布我用来获取所需行的代码。 详细信息在下面的代码末尾。 预先谢谢你!
文本文件中的数据
-------------------------------------------------------------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7
SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO
121 192 175 158 168 BLK NO. 101 DYS OFF 17
CVGORD X X X X AVPDSMORD X X X X GRBDSMORD X X X PIALEXORD X X X X CHALEXORD X X CRD. 72.00 BLK. 58.31
121= 0910/1255/0901; 192= 0810/1915/1536; 175= 0750/1218/0931; 158= 0730/1240/1359; 168= 0758/1239/1638; TAFB 245.09 C/O 0.0
代码:很抱歉忘记从我的代码中添加myDict [key] 已编辑
with open(filename,'r') as f:
count = 0
for line in f:
matchObj = re.match(dashes1,line)
if matchObj:
count += 1
strcount =str(count)
data = ['','','']
f.readline()
f.readline()
data[0] = f.readline()
data[1] = f.readline()
key = "myData"+strcount
myDict[key] = data
f.close()
for key in myDict:
print(key,'->',myDict[key])
我的输出是:
myData1 -> [' 121 192 175 158 168 BLK NO. 101 DYS OFF 17\n',' CVGORD X X X X AVPDSMORD X X X X GRBDSMORD X X X PIALEXORD X X X X CHALEXORD X X CRD. 72.00 BLK. 58.31\n','']
我想在BLK NO之后获取数据。即101,DYS OFF之后的数据为17,以此类推。值72.00和BLK。值58.31。
我不想打印BLK NO。,DYS OFF,CRD。也不是BLK。只是后面的值。 我已经尝试过使用re和match进行相同的方法,但是我被卡住了。 谢谢您的提前帮助!
解决方法
我会保持理智和简单,在将全部内容读入字符串后,只需在此处使用re.findall
:
inp = """-------------------------------------------------------------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7
SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO
121 192 175 158 168 BLK NO. 101 DYS OFF 17
CVGORD X X X X AVPDSMORD X X X X GRBDSMORD X X X PIALEXORD X X X X CHALEXORD X X CRD. 72.00 BLK. 58.31
121= 0910/1255/0901; 192= 0810/1915/1536; 175= 0750/1218/0931; 158= 0730/1240/1359; 168= 0758/1239/1638; TAFB 245.09 C/O 0.0"""
keys = ["BLK NO\.","DYS OFF","CRD\.","BLK\.","TAFB","C/O"]
regex = "(" + "|".join(keys) + ")"
matches = re.findall(regex + r'\s+(\d+(?:\.\d+)?)',inp)
print(matches)
此打印:
[('BLK NO.','101'),('DYS OFF','17'),('CRD.','72.00'),('BLK.','58.31'),('TAFB','245.09'),('C/O','0.0')]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。