2017-04-01 164 views
0

我有一個列表如下:刪除特定字符串中的python2.7

>>> header 
['Id', ["['GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt']"]] 
>>> type(header) 
list 

而且,我怎麼可以把它改成一個字符串如下:

['Id','GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt'] 

我嘗試使用re.split('\[|\]|\"',str(header))。但結果並不是我想要的。

['', 
"'Id', ", 
'', 
'', 
"'GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt'", 
'', 
'', 
'', 
''] 

所以,任何建議都是希望。

+1

數據來自哪裏?你爲什麼不能解決這個問題呢? –

+0

是的,我在努力。 – hope

+0

請通過編輯代碼 –

回答

0

這個怎麼樣?

>>> header = ['Id', ["['GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt']"]] 
>>> str(header).replace('[','').replace(']','').replace('"','').replace("'",'').split(', ') 
['Id', 'GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt'] 
+0

的[mcve]來編輯您的問題,並顯示'header'的位置並且想要修剪字符串 –

+0

確實如此。它是固定的。 –

+0

是的,爲什麼當我指示'str(header)'''[''ID',[「['GSM1172844_184A1.txt \',\'GSM1384316_MDAMB453.txt \']」]]時出現「\」 ' – hope

0
parsed = header[:1] + eval(header[1][0]) 

這將工作,如果你總是有你在的例子,而第二字符串具有適當的Python語法的準確格式。

+0

謝謝,讓我學習一個新的內置函數[eval()](https://docs.python.org/2/library/functions.html#eval)。 – hope

+0

爲什麼不使用'ast'模塊來評估該列表? –

+0

@ cricket_007'ast.literal_eval'如果輸入不是有效的Python數據類型,則會引發異常,因此如果不是,則不會執行代碼。 – hope

0

如何使用正則表達式?

In [1]: import re 
In [2]: re.findall("[A-Za-z0-9_\.]+", str(header)) 
Out[2]: ['Id', 'GSM1172844_184A1.txt', 'GSM1384316_MDAMB453.txt'] 
+0

是的,這是一個巧妙的管理。 – hope

相關問題