2015-04-03 78 views
0

我有以下形式雙引號字符串蟒蛇

'"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"' 

我需要梳理出雙引號中的子串的字符串,因此「08770」和「tykjkj」。

我應該怎麼做在python中?

+3

爲什麼不 'asdsadjieere'? – 2015-04-03 20:50:19

+0

從答案來看,這個問題大約15%清楚了需要什麼。 – TigerhawkT3 2015-04-03 21:11:03

+0

對不起,我以爲我是「嘲笑」是我提到的。 – 2015-04-03 21:14:42

回答

2

如果你想使用正則表達式:

>>> import re 
>>> re.findall(r'""(.*?)""', '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"') 
['O8770', 'tykjkj'] 
+0

這個問題很容易適用於簡單的字符串方法。 – TigerhawkT3 2015-04-03 20:59:20

+0

這可能是,但這是實際給出OP要求的唯一答案。 – Ben 2015-04-03 21:01:16

+1

我同意,我喜歡答案本! – 2015-04-03 21:02:17

0

這可以從命令行解釋器中運行。

s = '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"' 
s.split('\"') 

result: 
['', 'asfdfdfds', '', 'O8770', '', 'asdsadjieere', '', 'tykjkj', '', 'ldkflskfd', ''] 
+1

你不需要逃生,你應該分裂在2個雙引號 - 's.split('「'')' – MattDMo 2015-04-03 20:49:50

0
mystring = '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"' 
mystring.strip('"').split('""') 
+0

你能解釋你的答案嗎? – Zulu 2015-04-04 00:13:23

+0

它需要字符串,刪除前導和尾部雙引號,然後創建一個列表,其中列出了由雙引號分隔的左側。 – TigerhawkT3 2015-04-04 05:38:21

0

使用string.split功能與參數「給你的子

'"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"'.split('"') 

結果:

['', 'asfdfdfds', '', 'O8770', '', 'asdsadjieere', '', 'tykjkj', '', 'ldkflskfd', ''] 
0
vals = '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"'.split('\"') 
print [val for val in vals if val] 
+1

你可以用'if val'替換'if val!='''。 – TigerhawkT3 2015-04-03 20:51:47

+0

是的,可以做到。 – 2015-04-03 20:53:21

2

很明顯,從很多答案中,有很多方法可以做到這一點。訣竅是將初始字符串「清理」或「映射」爲可以容易分離的內容,例如通過字符串split()方法。

>>> s = '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"' 
>>> s.replace('"', '\t').split() 
['asfdfdfds', 'O8770', 'asdsadjieere', 'tykjkj', 'ldkflskfd'] 

選擇如何原來的字符串映射爲依賴於什麼樣的字符串你可能會得到。他們都會有平衡的報價?他們可能包含什麼樣的空白或其他字符?真實世界的數據如何變得很髒/與您的基本解析假設不一致?因爲任何可以嘗試解析/拆分字符串的方法都取決於的一些假設。

+0

初始字符串並不一定需要清理 - 'split()'可以分割不僅僅是空白。 – TigerhawkT3 2015-04-03 20:58:15

+0

@ TigerhawkT3是的'split()'是相當通用的。但是考慮一下:你的答案在調用split('「'')'之前使用'strip(''')'。'strip'調用?你正在清理初始字符串,然後可以方便地拆分它。 QED。 – 2015-04-03 21:00:54

0

你可以使用正則表達式

import re 
string = '"asfdfdfds""O8770""asdsadjieere""tykjkj""ldkflskfd"' 
print re.findall('".+?"', string)