使用带有python的正则表达式来查找唯一的数字格式

时间:2016-06-07 14:16:15

标签: python regex dictionary format set

我有一个非常大的文本文件(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个或更多)。希望这有帮助

1 个答案:

答案 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)