删除特定字符串中的python2.7

问题描述:

我有一个列表如下:删除特定字符串中的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

请通过编辑代码 –

这个怎么样?

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

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

如何使用正则表达式?

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