Форум сайта python.su
0
Прошу помощи в составлении и так задача проверить на идентичность строку 4 цифры пробел/ы 6 цифр. Составил что-то типа
txt='1909 112233'
re1='(\\d{4})' # Integer Number 1
re2='(\\s+)' # White Space 1
re3='(\\d+)' # Integer Number 2
rg = re.compile(re1+re2+re3,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
int1=m.group(1)
ws1=m.group(2)
int2=m.group(3)
print “(”+int1+“)”+“(”+ws1+“)”+“(”+int2+“)”+“\n”
но работает не так как нужно прокатывают варианты с большим и меньшим количеством цифр
Офлайн
0
import re
txt='1909 112233'
for i in re.findall(r"\d{4}\s+\d{6}", txt): print i
#1909 112233
Офлайн
0
Mozartесли будет передана строка txt='19093 112233'import re
txt='1909 112233'
for i in re.findall(r"\d{4}\s+\d{6}", txt): print i
#1909 112233
Так что ли?
Офлайн
0
for i in re.findall(r"^\d{4}\s+\d{6}$", txt): print iОфлайн
0
Mozartа как сделать так чтобы было точное совпадение ни символом больше, т.к это проверка документа, и 5 цифр в серии не должно быть, ну вы понимаете.for i in re.findall(r"^\d{4}\s+\d{6}$", txt): print i
Вернет результат, только если будет найдено точное вхождение.
Отредактировано igorakintev (Сен. 13, 2012 21:24:21)
Офлайн
0
txt = ['1909 112233', '34354 33432432434', '3434 223456']
for i in txt:
if re.findall(r"^\d{4}\s+\d{6}$", i): print i
# 1909 112233
# 3434 223456
Офлайн
857
findall() там не подходит (режим не многострочный)
>>> import re >>> >>> n4sn6 = re.compile(r'^\d{4}\s+\d{6}$') >>> >>> lst = ['1909 112233', '34354 33432432434', '3434 223456'] >>> >>> valid = filter(n4sn6.match, lst) >>> print(list(valid)) ['1909 112233', '3434 223456'] >>>
Офлайн