在Python中搜索txt文件中的区域代码

时间:2011-06-25 19:05:14

标签: python search text-files

我有一个看起来像这样的文本文件:

Thomas Edgarson, Berliner Str 4, 13359 Berlin
Madeleine Jones, Müller Str 5, 15992 Karlsruhe
etc...

总是两个单词,后跟逗号,然后是两个单词和数字,逗号,区号和城市。没有例外。

我用过

f=open("C:\\Users\\xxxxxx\\Desktop\\useradresses.txt", "r")
text=f.readlines()
f.close()

所以现在我有了所有列的列表。我现在如何在这些字符串中搜索区号。我需要创建一个看起来像这样的字典

{'13359':[('Neuss','Wolfgang'),('Juhnke','Harald')]}

相信我,我已经搜索过,但找不到有用的信息。对我来说,在字符串中搜索像仲裁区域代码这样的东西的整个想法是新的,到目前为止我还没有遇到它。

如果你能给我一些关于我应该在哪里寻找教程的建议,或者让我知道从哪里开始,我会很高兴。

4 个答案:

答案 0 :(得分:1)

Loop通过文件,阅读行和split逗号。然后,通过空间分割处理每个部分。然后,将值添加到dictionary

答案 1 :(得分:1)

d={}

for line in open('useradresses.txt','r'):
    if line.strip()=='':
        continue
    (name,strasse,plzort) = line.split(',')
    nachname,vorname=name.split()
    plz,ort=plzort.split()
    if plz in d:
        d[plz].append((nachname,vorname))
    else:
        d[plz]=[(nachname,vorname),]
print d

答案 2 :(得分:1)

dic = {}
with open('filename') as file:
    for name, addr, zcode in (i.split(',') for i in file if i.rstrip()):
        dic.setdefault(zcode.split()[0], []).append(name.split())

Sjoerd的进一步解释是:

使用生成器表达式来破坏3个变量中的每一行:name,addr和zcode。然后我将zcode分成所需的数字并将其用作字典键。

由于dict可能还没有密钥,我使用setdefault方法,并在附加分割名称之前用空列表设置密钥。

答案 3 :(得分:-1)

Python有很多处理字符串操作的库,就是这样。你会想要re库和shlex库。我建议使用以下代码:

with open("C:\\Users\\xxxxxx\\Desktop\\useradresses.txt", "r") as f:
    for line in f.readlines():
        split = shlex.split(line)
        mydict[split[6]] = [(split[0], split[1])]

这不完美,它会覆盖相同的邮政编码,并删除一些值。它应该指出你正确的方向。