#python
#python
Вопрос:
У меня ограниченные знания Python, поэтому у меня много проблем с исправлением этого.
После извлечения текста из файла pdf и небольшой очистки я получил следующий результат:
"BARRINE QLD 4872ARCHDALE VIC 3475ARCHDALE JUNCTION VIC 3475ARCHER NT 0830ARCHER RIVER QLD 4892"
(Это небольшая выборка из гораздо большего результата!)
Есть ли способ добавить разрыв строки после чисел? Итак, вместо приведенной выше строки у меня было бы что-то похожее на это:
'BARRINE QLD 4872',
'ARCHDALE VIC 3475'
Я пробовал читать разные статьи об этом, но, возможно, из-за недостатка знаний я просто не могу в этом разобраться!
Ответ №1:
Это не самое элегантное решение, но что-то вроде этого может сработать:
string = "BARRINE QLD 4872ARCHDALE VIC 3475ARCHDALE JUNCTION VIC 3475ARCHER NT 0830ARCHER RIVER QLD 4892"
def split_at_numbers(string):
char_at = 0
temp_str = ""
out = []
while char_at < len(string):
temp_str = string[char_at]
try:
if string[char_at].isnumeric() and not string[char_at 1].isnumeric():
out.append(temp_str)
temp_str = ""
except IndexError:
out.append(temp_str)
char_at = 1
return out
print(split_at_numbers(string))
# output: ['BARRINE QLD 4872', 'ARCHDALE VIC 3475', 'ARCHDALE JUNCTION VIC 3475', 'ARCHER NT 0830', 'ARCHER RIVER QLD 4892']
Приведенный выше цикл перебирает каждый символ и проверяет, является ли символ одним) числом и двумя), за которым не следует число. Если эти два условия верны, тогда мы прерываем этот раздел и переходим к следующему разделу этой строки. Мы сохраняем каждый из этих разделов в список, который мы возвращаем в конце.
Оттуда с данными должно быть легко работать.