Python помогите проставить пробел
Коллеги, добрый день, интересует вопрос. Написал типа простого парсера, который берет исходник, фильтрует его и сохраняет в необходимом виде.
Вот исходник как пример.
!4212345SFRUB FIO 02/05/1961 M V/RUB/000000 00000 RUB
Требуется что бы был такой вид.
4212345SF RUB FIO 02/05/1961 M 42122324F RUB FIO 02/05/1961 M
Все работает, но немного не так как надо. Проблема в том что не знаю как удалить везде ! и где номер и rub (4212345SFRUB) проставить везде пробел. Вот так 4212345SF RUB. Понимаю что нужно регулярками, но не понимаю как.
import re
bands = list ()
filename = 'APIS.txt'
for line in open (filename).readlines():
if not line.startswith(" P") and not line.startswith("-"):
bands.append(line.strip())
print(bands)
filename = 'bands_sorted.txt'
with open (filename, 'w') as fout:
for band in bands:
fout.write (band + '\n')
Ответы (1 шт):
Как Вы уже написали, что можно воспользоваться регулярными выражениями:
import re
text = '!4212345SFRUB FIO 02/05/1961 M'
finds = re.findall('!(\d{7})([A-Z]{2})([A-Z]{3}) ([A-Z]{3}) (\d{2}/\d{2}/\d{4}) ([A-Z])', text, re.IGNORECASE)
template = '{0}{1} {2} {3} {4} {5}'
for f in finds:
print(template.format(*f))
# 4212345SF RUB FIO 02/05/1961 M
Ищем все совпадения с применением re.findall() в тексте, начинающегося с !, после него семь чисел, потом две буквы в интервале A-Z и т.д. до даты и финальной одинарной буквы. Скобками отмечаются искомые составляющие.
На выходе имеем список кортежей с найденными составляющими значений. Их все, к примеру, выводим через форматируемый шаблон.