2016-09-30 59 views
-1

我有樣本數據集A.它看起來像:如何將數據轉換成列表蟒蛇

1:CH,AG,ME,GS;AP,CH;HE,AC;AC,AG 
2:CA;HE,AT;AT,AC;AT,OG 
3:NE,AG,AC;CS,OD 

預期的結果應該是:

['CH','AG','ME','GS','AP','CH','HE','AC','AC','AG','CA','HE','AT','AT','AC','AT','OG','NE','AG','AC','CS','OD'] 

我不知道如何寫代碼在Python中列表。

+1

你試過試圖解決這個問題的任何事情?你能否展示你的代碼並解釋你在實現中遇到了哪些困難? – idjaw

+0

'打開('path/to/file')as infile:data = [i for sub in [line.split(「:」,1).replace(';',',')。split (',')爲infile中的行] for i in sub]' – inspectorG4dget

回答

4

一個辦法是找到所有的2個連續的大寫字母的情況下用正則表達式:

In [1]: import re 

In [2]: data = """ 
    ...: 1:CH,AG,ME,GS;AP,CH;HE,AC;AC,AG 
    ...: 2:CA;HE,AT;AT,AC;AT,OG 
    ...: 3:NE,AG,AC;CS,OD""" 

In [3]: re.findall(r"[A-Z]{2}", data, re.MULTILINE) 
Out[3]: 
['CH', 
'AG', 
'ME', 
'GS', 
'AP', 
'CH', 
'HE', 
'AC', 
'AC', 
'AG', 
'CA', 
'HE', 
'AT', 
'AT', 
'AC', 
'AT', 
'OG', 
'NE', 
'AG', 
'AC', 
'CS', 
'OD'] 
0

試試這個,如果Python 2.7版


a = "CH,AG,ME,GS;AP,CH;HE,AC;AC,AG" 
b = "CA;HE,AT;AT,AC;AT,OG" 
c = "NE,AG,AC;CS,OD" 
d = a+','+b+','+c 
d = d.replace(';',',') 
print d.split(',') #output as expected