在Python的txt文件中搜索区号

在Python的txt文件中搜索区号,python,search,text-files,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()

我有一个如下所示的文本文件:

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')]}
相信我,我已经搜索过了,但找不到有用的信息。对我来说,在字符串中搜索任意区号之类的东西的整个想法是新的,到目前为止我还没有遇到过


如果您能给我一些指导,告诉我应该在哪里查找教程,或者给我一个从哪里开始的想法,我会很高兴的。

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

打开(“C:\\Users\\xxxxxx\\Desktop\\useradress.txt”,“r”)作为f:
对于f.readlines()中的行:
split=shlex.split(行)
mydict[split[6]=[(split[0],split[1])]
这将不是完美的,它将覆盖相同的邮政编码,并删除一些值。不过,它应该为您指出正确的方向。

通过文件、阅读行和逗号。然后,通过按空间分割来处理每个零件。然后,将这些值添加到

Sjoerd询问的进一步解释:

使用生成器表达式将每行打断为3个变量:name、addr和zcode。然后我将zcode拆分为所需的数字,并将其用作字典键


由于dict可能还没有键,因此我使用
setdefault
方法,在添加拆分名称之前用空列表设置键。

shlex类使编写类似于Unix shell的简单语法的词法分析器变得容易。问题中的地址列表不是这样的。代码不错,但由于这是家庭作业和简单的作业,海报不太可能理解你在这里到底在做什么。而且,如果他交上这个,他的老师会立即发现他作弊了。谢谢,我对你的答案很感兴趣,但我认为这比我目前作为python程序员的水平略低;)。但是我还是会尝试一下,看看它能做什么。为什么在每次迭代中使用setdefault而不是在代码开始时使用一次?谢谢,这非常有用。我还没有偶然发现分离或分离的概念,所以这就是我所寻找的。
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
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())