使用正则表达式和python查找唯一的数字格式
我有一个非常大的文本文件(45000行),ID为#,格式为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)并查看差异。我目前所做的只是显示值并重复:使用正则表达式和python查找唯一的数字格式,python,regex,dictionary,format,set,Python,Regex,Dictionary,Format,Set,我有一个非常大的文本文件(45000行),ID为#,格式为4或5个数字,后跟2或3个数字,然后是一个字母,有时尾随在末尾 示例格式: XXXX-XX XXXXX-XX,XXXXX-XXw,XXXXX-XXw,XXXXX-XXww ((其中w为字母,X为数字)) 大多数值的格式为##################################,但一个大 我想做的是:每当有一个值的末尾有一个字母时,我想将它存储在一个字典中,并跟踪与正常格式不同的字母的所有唯一值,然后打印该字典 所以对于像:11
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
因此,末尾的值各不相同,我只想将结尾字母(有时有2个或更多)存储在dict或set中。希望这有助于一个简单的集合,它读取您的正则表达式,并与您澄清的注释相匹配:
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)
读取正则表达式的简单集合应与澄清的注释相匹配:
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)
你能澄清一下你的意思吗?你想要像
s->[1111-12]、a->[1111-12]、b->[11234-24]
或1111-12->[s,a]、11234-24->[b]
?格式是11111-12和3424-32,但有时结尾有一个字母,比如23242-32s或34343-23b或2234-22a,有时还有两个字母14343-32RA等等。对于字母部分,仅字母部分,我希望存储这些唯一值/条目,然后打印所述值。有很多变体(a、b、ba、c、R、RA、s、aaa等),我只想知道结尾的字母以及出现了多少独特的变体。明白吗?很好?我这样写的:sample1=re.compile(r'(\d{4,5}-\d{2,3}[^\s]+))我没有为此返回任何值,也许我没有正确输入它?你能澄清一下你的意思吗?你想要像s->[1111-12]、a->[1111-12]、b->[11234-24]
或1111-12->[s,a]、11234-24->[b]
?格式是11111-12和3424-32,但有时结尾有一个字母,比如23242-32s或34343-23b或2234-22a,有时还有两个字母14343-32RA等等。对于字母部分,仅字母部分,我希望存储这些唯一值/条目,然后打印所述值。有很多变体(a、b、ba、c、R、RA、s、aaa等),我只想知道结尾的字母以及出现了多少独特的变体。明白吗?很好?我这样写的:sample1=re.compile(r'(\d{4,5}-\d{2,3}[^\s]+))我没有为此返回任何值,可能我没有正确输入它?group(1,2)的组部分在做什么?获取运行时错误:索引器错误:uniq
中未存储此类组值。如果您想查看这些值,请添加print(uniq)
这正是我所需要的!但它也只是在最后打印数字,但总的来说,它让一切变得更容易,谢谢。小组部分在做什么?ma.group(1,2)?获取运行时错误:索引器错误:uniq
中未存储此类组值。如果您想查看这些值,请添加print(uniq)
这正是我所需要的!但它也只是在最后打印数字,但总的来说,它让一切变得更容易,谢谢。