我对Python的了解有限,所以我在解决这个问题上遇到了很多困难。
从pdf文件中提取文本并进行小规模清理后,我得到了以下结果:
"BARRINE QLD 4872ARCHDALE VIC 3475ARCHDALE JUNCTION VIC 3475ARCHER NT 0830ARCHER RIVER QLD 4892"
(这是来自更大结果的小样本!(
有没有办法在数字后面加一条虚线?所以,代替上面的字符串,我会有类似的东西:
'BARRINE QLD 4872',
'ARCHDALE VIC 3475'
我试着阅读不同的关于这方面的文章,但也许是因为我缺乏知识,我根本想不出来!
这不是最优雅的解决方案,但类似的解决方案可能会起作用:
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']
上面的循环对每个字符进行迭代,并检查该字符是否是一个数字和两个后面没有数字的如果这两个条件成立,那么我们中断该部分,进入该字符串的下一部分。我们将这些部分中的每一个存储到一个列表中,并在最后返回。
从那里,数据应该很容易处理。