Я работаю с текстовым файлом (620 КБ), который имеет список ID # s, за которым следуют полные имена, разделенные запятой. Рабочего регулярное выражение я использовал для этогоRegex для извлечения имени из списка
^([A-Z]{3}\d+)\s+([^,\s]+)
Я хочу также захватить имя и отчество (пробел разделителя между первым и ИМ). Я попробовал это, выполнив:
^([A-Z]{3}\d+)\s+([^,\s]+([\D])+)
, который работает, но я хочу, чтобы удалить новый разрыв строки, который генерируется на выходном файле (я буду импортировать два выходных файла в базу данных (возможно, Access) и Я не хочу, чтобы захватить новые разрывы строк, а также, если есть лучший способ написания регулярных выражений
Полный код:
import re
source = open('source.txt')
ticket_list = open('ticket_list.txt', 'w')
id_list = open('id_list.txt', 'w')
for lines in source:
m = re.search('^([A-Z]{3}\d+)\s+([^\s]+([\D+])+)', lines)
if m:
x = m.group()
print('Ticket: ' + x)
ticket_list.write(x + "\n")
ticket_list = open('First.txt', 'r')
for lines in ticket_list:
y = re.search('^(\d+)\s+([^\s]+([\D+])+)', lines)
if y:
z = y.group()
print ('ID: ' + z)
id_list.write(z + "\n")
source.close()
ticket_list.close()
id_list.close()
Пример данных: Источник:
ABC1000033830 SMITH, Z
100000012 Davis, Franl R
200000655 Gest, Baalio
DEF4528942681 PACO, BETH
300000233 Theo, David Alex
400000012 Torres, Francisco B.
ABC1200045682 Mo, AHMED
DEF1000006753 LUGO, G TO
ABC120de la Rosa, Maria E.
Загрузите некоторые входные данные из файла и требуемого вывода. –
Вы рассматривали второе или альтернативное регулярное выражение группы захвата для конкретного имени и среднего начального? Кроме того, на этот вопрос будет легче ответить, если вы предоставили тестовые данные для использования. Я подозреваю, что использование альтернативной группы захвата будет работать. –
Если ваш исходный файл разделен запятой, почему бы не использовать модуль csv. затем просто добавьте второй столбец в список имен. Кажется, проще, имхо. –