2014-12-24 60 views
0

我是新與蟒蛇,因爲這個名單:如何解析給出以下內容的字符串?

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

請問您的字符串實際上有一個'...',或者是你使用來表示多個字符串? – senshin

+0

我試圖避免正則表達式 – newWithPython

+0

@ senshin是它是一個非常大的字符串,即時通訊使用它來表示更多的字符串 – newWithPython

回答

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 ' 
+0

我不想使用其他圖書館的任何其他想法嗎?另外我得到了格式不正確的字符串。謝謝 – newWithPython

+0

@newWithPython爲什麼你不想使用任何其他庫? – senshin

+0

因爲即時通訊開始與蟒蛇,我想看到如何操縱字符串的例子。 – newWithPython

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'