我有一个非常大的文本文件(45000行),ID#' s格式为4或5个数字,后跟2或3个数字,然后有一个字母有时落在最后。
示例示例格式:
XXXX-XX XXXXX-XX,XXXXX-XXw,XXXXX-XXw,XXXXX-XXww
((其中w是字母,X是数字))
大多数值的格式为##### - ##或#### - ##,但是一个大块的末尾有一个或多个字母。
我想做的事情:每当有一个字母末尾的值时,我想将它存储在字典中并跟踪与正常格式不同的字母的所有唯一值,然后打印出来字典。
因此,对于像:11111-12s或1111-12a或11234-24b这样的值,我想存储字母值(s,a,b)并查看差异。我目前只显示值并重复:
import re
sampleFile = open("Sample.txt", "r")
#regEX formats
sample = re.compile(r'(\d{4,5}-\d\d\w{1,4})')
for line in sampleFile:
sampleNum = sample.findall(line)
for word in sampleNum:
print word
我如何针对正则表达式的w {1,4}部分的唯一值并将它们存储在dict中?
编辑:当我跑到上面时,这是我得到的数字样本:
12647-01a 12627-02R 12606-01a 12588-02a 12583-01S 12583-01R
所以最后这些值会有所不同,我只想在dict或set中存储结束字母(有时候有2个或更多)。希望这有帮助
答案 0 :(得分:0)
一个读取你的正则表达式的简单集应该与你澄清的评论相符:
import re
uniq = set()
with open('Sample.txt') as fin:
for line in fin:
ma = re.search(r'(\w{1,4})$', line)
if not ma:
continue
uniq.add(ma.group(1))
print(uniq)