2015-04-03 48 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)