2017-08-10 128 views
0
的第二occurence串

我的字符串是象下面這樣:拆分以逗號

Str=S1('amm','string'),S2('amm_sec','string'),S3('amm_','string') 

我如何可以分割字符串,以便我爲str_list項變爲:

Str_List[0]=S1('amm','string') 
Str_List[1]=S2('amm_sec','string') 
... 

如果我使用Str.split(',')則輸出是:

Str_List[0]=S1('amm' 
... 
+0

請格式化你的代碼打,因爲我t代表,它是不可讀的。另外,你幾乎可以肯定地討論* python lists * not * python arrays *。 –

+0

你的字符串應該在引號中。按原樣,這會嘗試將'S1'作爲函數應用,並且即使定義了語法錯誤也會給出語法錯誤。 –

+0

這個字符串從哪裏來?像'amm''這樣的內部字符串是否可以包含引號或逗號? –

回答

0

我首先想到的是將',S'替換爲' S'使用正則表達式和拆分空間上。

import re 
Str = re.sub(',S',' S',Str) 
Str_list = Str.split() 
+0

嗨..感謝您的關注和幫助。我現在能夠分裂。但現在得到另一個問題: – Shikha

+0

嗨..謝謝你看看,並幫助解決。我現在能夠分裂。但是現在又出現了另一個問題:SchematicField('amm_report_row','string')「,」 SchemaField('amm_subsection_row','float')「,」SchemaField('amm_subsection _desc','string')「] 和SCHEMA [0]給了我SCHEMA [0] = SchemaField('amm_reporting_row','string')等等 但我需要數組沒有雙引號和數組的每個元素在新行。 如果雙引號可以刪除,那麼它將是正確的。 – Shikha

+0

是SchemaField的一個函數嗎?你想要一個函數調用列表嗎? –

1

你可以在Python中使用正則表達式與re

import re 
Str = "S1('amm','string'),S2('amm_sec','string'),S3('amm_','string')" 
lst = re.findall("S\d\(.*?\)", Str) 

這會給你:

["S1('amm','string')", "S2('amm_sec','string')", "S3('amm_','string')"] 

解釋正則表達式多一點:

S首先你匹配'S'

\d接下來看一個數字

\(然後在中間任意數量的字符的「(」字符

.*?(但匹配儘可能少的也可以),然後最後

\) 「)」字符

你可以用正則表達式多一點here

+0

我建議用'\ w +'替換'S \ d'來更通用。 –