【发布时间】:2016-06-07 14:16:14
【问题描述】:
我有一个非常大的文本文件(45000 行),其中 ID # 的格式为 4 或 5 个数字,后跟 2 或 3 个数字,最后有时是一个字母。
示例格式:
XXXX-XX XXXXX-XX ,XXXXX-XXw, XXXXX-XXw, XXXXX-XXww
((其中 w 是一个字母,X 是一个数字))
大多数值的格式为#####-## 或####-##,但大块的末尾有 1 个或多个字母。
我想要做什么:每当有一个值末尾有一个字母时,我想将它存储在字典中并跟踪与正常格式不同的字母的所有唯一值,然后打印出来字典。
因此对于以下值: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} 部分的唯一值并将它们存储在字典中?
编辑:当我在上面运行时,这是我得到的数字示例:
12647-01a 12627-02R 12606-01a 12588-02a 12583-01S 12583-01R
所以末尾的那些值会有所不同,我只想将结尾字母(有时有 2 个或更多)存储在字典或集合中。希望这会有所帮助
【问题讨论】:
-
你能澄清一下你的意思吗?你想要
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 或有时 2 个字母 14343-32RA 等。对于字母部分,并且只有字母部分,我想存储这些唯一值/条目,然后打印所述值。有很多变体(a、b、ba、c、R、RA、s、aaa 等)我只想知道最后的字母以及发生了多少独特的变体。明白了吗?
-
this好吗?
-
我是这样写的:sample1 = re.compile(r'(\d{4,5}-\d{2,3}[^\s]+)') 我没有为此返回的值,也许我没有正确输入?
标签: python regex dictionary format set