在数字之后在python中拆分字符串

时间:2015-06-03 04:12:10

标签: python regex

我是python的新手,而且大多是编程新手。我一直在尝试将某些.txt文件解析为excel,并且已经成功使用了很多这些文件,这些文件很容易分成我可以编写代码的行。

但是,我现在有一堆文件包含我的信息,但没有合理的换行符。我的数据如下:

company1 name _______ 123   company2 name 456 company3 name 
789

在名字和数字之间没有好的指标 - 有时候之间有下划线,有时只有空格,有时候中间有一个换行符。如果我可以将所有这些分成在每个完整数字后结束的行,那么我已编写的代码将完成其余的工作。理想情况下,我有一个看起来像这样的字符串:

company1 name ______ 123
company2 name 456
company3 name 789

解析出原始字符串中的换行符。

我希望有人可以提供帮助!

3 个答案:

答案 0 :(得分:2)

您应该使用正则表达式来查找文本中的模式,并允许您使用换行符修改该模式。

例如:

import re
line = 'company1 name _______ 123   company2 name 456 company3 name 789'
output = re.sub(r'(\s\d+\s*)', r'\1\n', line)
print output

返回

company1 name _______ 123   
company2 name 456 
company3 name 789

答案 1 :(得分:0)

尝试使用拆分然后检查每个元素的类型以查看它是否为数字:

new_string = ''
data_string = data_string.replace('\n','')
data_array = data_string.split(' ')
for portion in data_array:
    if type(portion) in [int, float]:
        new_string = new_string + portion + '\n'
    else:
        new_string = new_string + portion + ' '

答案 2 :(得分:0)

import re
p = re.compile(r'(\b\d+)\s+')
test_str = "company1 name _______ 123   company2 name 456 company3 name 789"
subst = "\1\n"

result = re.sub(p, subst, test_str)

您可以使用re.sub