2015-06-03 34 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來做。

相關問題