Я использую регулярное выражение, чтобы извлечь букву "u" из адресной строки, но только когда она используется в качестве сокращения (u, u., U, U. и т. Д.). Однако проблема, с которой я работаю, состоит в том, что список строк, которые у меня есть, запутан и полон ошибок. Я уже пытался извлечь то, что мне нужно, из множества ошибок, которые я видел в данных. Я знаю, что, должно быть, мне не хватает чего-то маленького, но любая помощь приветствуется.
Я пробовал эти выражения регулярных выражений:
- (\ s (u | U)?.?,?.? \ S) <- кажется немного странным </li>
- [^ \ ш +] [мкЕд]
- [^ \ ш +] [мкЕд] [^ TCA]
У меня также есть другая идея, чтобы обойти эту проблему, которая потребует разделения адресов (разделенных на улицу, номер и т. Д.), А затем исправить часть улицы и склеить ее обратно. Мне повезло, что я вытащил только номерную часть:
- (\ d + - \ d + | \ d + / * \ w * | (-))
Тем не менее, я хотел бы увидеть, где я запутался в выражении регулярного выражения, которое должно выбирать «u». Regex101.com был моим лучшим другом с этим, и я бы не стал так далеко без него.
test_strings = [
"Holics u 5/a",
"Holics U 5/a",
"Holics u5/a",
"Huolics u 5/a",
"Holics u. 5/a",
"Holuics u5",
"Holics and other stuff u more stuff after 5",
"Houlics utca 5"
]
# two regex patterns I have considered
print("First regex pattern ------------------------------------")
pattern = r"[^\w+][uU]"
replacement_text = " utca "
for item in test_strings:
print(re.sub(pattern,replacement_text,item))
print("\nSecond regex pattern ------------------------------------")
pattern = r"[^\w+][uU][^tca]"
replacement_text = " utca "
for item in test_strings:
print(re.sub(pattern,replacement_text,item))
Результаты из вышеуказанного кода:
Первый шаблон регулярного выражения:
Holics utca 5/a
Holics utca 5/a
Holics utca 5/a
Huolics utca 5/a
Holics utca . 5/a
Holuics utca 5
Holics and other stuff utca more stuff after 5
Houlics utca tca 5 # <-------------------------------- issue
Второй шаблон регулярного выражения:
Holics utca 5/a
Holics utca 5/a
Holics utca /a # <----------------------------------- issue
Huolics utca 5/a
Holics utca 5/a
Holuics utca <-------------------------------------- issue
Holics and other stuff utca more stuff after 5
Houlics utca 5
Все работает, за исключением последней строки («Houlics utca tca 5») в первом шаблоне регулярных выражений, и когда я пытаюсь создать выражение, учитывающее также строки, содержащие «utca», я теряю числа в строках как "Holics U5 / A."
По большей части я ожидаю, что результат будет:
- Holics u. 5 / a -----> Holics utca 5 / a
В качестве последнего замечания, у меня есть функции, которые удаляют точки и пробелы.