Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式和python查找唯一的数字格式_Python_Regex_Dictionary_Format_Set - Fatal编程技术网

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

使用正则表达式和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

我有一个非常大的文本文件(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)并查看差异。我目前所做的只是显示值并重复:

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)
这正是我所需要的!但它也只是在最后打印数字,但总的来说,它让一切变得更容易,谢谢。