2013-08-29 6 views
-1

У меня есть строка, какнайти номер Zip из строки

x = ''' 
Anrede:* 

 

 

 
Herr 
*Name:* 

 
Tobias 
*Firma:* 

*Strasse/Nr:* 

 
feringerweg 
*PLZ/Ort:* 

 
72531 
*Mail:* 
[email protected] [1] 


 

 

 

''' 

В том, что есть почтовый номер PLZ/Ort:, это почтовый номер, я хотел, чтобы найти номер почтового индекса из всей строки, поэтому возможный способ заключается в использовании регулярных выражений, но не знаю, регулярное выражение,

+0

Каков формат этого почтового индекса? Всегда ли (три заглавных буквы)/(одна заглавная буква) (две строчные буквы) и т. Д.? Прежде чем писать регулярное выражение, вам нужно знать, какой шаблон вы хотите искать. – xbonez

+1

Я думаю, вам стоит попробовать прочитать документы и некоторое учебное пособие по регулярному выражению, прежде чем задавать вопрос здесь и публиковать, когда/если у вас возникнут проблемы с получением результатов, которые вам нужны. – Jerry

+0

* PLZ/Ort: * 72531 здесь 72531 номер почтового индекса, – OpenCurious

ответ

1

Предполагая, что вход в вашем примере файл с несколькими строками, вы можете попробовать что-то вроде этого:

import re 

for line in open(filename, 'r'): 
    matchPattern = "^(\d{5})$" 
    match = re.match(matchPattern, line, flags=0) 
    print match.group(0) #the whole match 

I е это просто длинная строка, вы можете использовать один и тот же шаблон матча, но без ^ (линии начинаются) и $ (конец строки) Индикаторы ->(\d{5})

1

Я предполагаю, что Postleitzahl всегда следует две строки, которые выглядят как *PLZ/Ort:* и 
, и что это единственный текст на его линии. Если это так, то вы можете использовать что-то вроде:

import re 
m = re.search('^\*PLZ/Ort:\*\n
\n(\d{5})', x, re.M) 
if m: 
    print m.group(1) 
0

Вы можете попробовать это регулярное выражение:

(?<=PLZ\/Ort)[\s\S]+?([a-zA-Z0-9\- ]{3,9}) 

Он будет поддерживать буквенно-цифровые почтовые индексы, а также. Вы можете видеть длину/формат почтовых индексов от here.

Смежные вопросы