如何解析给定以下字符串?

时间:2014-12-24 16:51:06

标签: python parsing python-2.7

我是python的新手,给出了这个列表:

a_list=['''('string','string'),...,('string','string'), 'STRING' ''']

如何删除引号,括号和省略'STRING'以获得这样的字符串:

string string ... string 

这是我所有人已经准备好的尝试:

new_list = ''.join( c for c in ''.join(str(v) for v
                                              in a_list)
                           if c not in ",'()")
print new_list

2 个答案:

答案 0 :(得分:1)

我知道另一个答案是完美的答案,但是当你想要了解更多关于字符串技术而不是使用现有的库时,这也会有效。

请注意,这是解决问题的非常糟糕方式。

a_list=['''('string','string'),...,('string','string'), 'STRING' ''']
new_list = []
for i in a_list:
    j = i.replace("'",'')
    j = j.replace('(','')
    j = j.replace(')','')
    j = j.replace(',',' ')
    j = j.replace('STRING','')  
    j = j.strip()
    new_list.append(j)

print new_list

将输出

'string string ... string string'

答案 1 :(得分:0)

如果您的字符串没有文字...,则可以在此处使用ast.literal_eval。这会将你的字符串转换为元组(其元素是2元组和字符串),因为它基本上是元组的字符串表示形式。在那之后,迭代元组并将其转换为您想要的形式是一件简单的事情。

>>> import ast
>>> x = '''('string','string'), ('string2','string3'), ('string','string'), 'STRING' '''
>>> y = ast.literal_eval(x); print(y)
(('string', 'string'), ('string2', 'string3'), ('string', 'string'), 'STRING')
>>> ' '.join( ' '.join(elem) if type(elem) is tuple else '' for elem in y )
'string string string2 string3 string string '