2015-06-03 28 views
3

我对python非常陌生,而且大多是编程新手。我一直试图将某些.txt文件解析为excel,并且已经成功地将其中的一些文件很容易地拆分成可以编码的行。在一个数字之后在python中分割一个字符串

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

company1 name _______ 123 company2 name 456 company3 name 
789 

姓名和号码之间没有很好的指标 - 有时也有之间,有时只有空白下划线,有时还有介于两者之间的换行。如果我可以将所有这些分隔成每个完整数字后面结尾的行,那么我已经编写的代码将完成剩余的代码。理想情况下,我有一个字符串,它看起来像:

company1 name ______ 123 
company2 name 456 
company3 name 789 

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

我希望有人能帮助!

+0

我们拆分后的数字总是3位数字吗? –

+0

非常感谢你们! –

回答

3

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

例如:

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 
+0

非常感谢Martin! –

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 + ' ' 
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) 

你可以用01来做。

相关问题