python我怎样才能去掉第一个和最后一个双引号

我想剥去双引号

string = '"" " " ""\\1" " "" ""' 

成为

 string = '" " " ""\\1" " "" "' 

我试图使用rstriplstripstrip('[^\"]|[\"$]')但它不起作用。

我怎样才能做到这一点? 感谢你们对我的帮助。

如果您想要删除的引号总会像您所说的那样是“第一个和最后一个”,那么您可以简单地使用:

string = string[1:-1]

如果你不能认为你处理的所有string都有双引号,你可以使用这样的东西:

 if string.startswith('"') and string.endswith('"'): string = string[1:-1] 

编辑:

我敢肯定,你只是使用string作为例证的variables名称在这里和在你的真正的代码中它有一个有用的名字,但我觉得有责任警告你,标准库中有一个名为string模块。 它不会自动加载,但如果您曾经使用import string确保您的variables不会超过它。

要删除第一个和最后一个字符,并且在每种情况下只有在所涉及的字符是双引号时才进行删除:

 import re s = re.sub(r'^"|"$', '', s) 

请注意,RE模式与您给出的模式不同,操作是使用空replacestring的sub (“替代”)( strip是一个string方法,但与您的要求有很大不同,正如其他答案指出的那样) 。

重要提示:我正在扩大问题/答案去除单引号或双引号。 我把这个问题解释为两个引号都必须存在,并且匹配才能执行。 否则,string将不会被返回。

要“去除”一个string表示,它可能有单引号或双引号(这是@ tgray答案的扩展):

 def dequote(s): """ If a string has single or double quotes around it, remove them. Make sure the pair of quotes match. If a matching pair of quotes is not found, return the string unchanged. """ if (s[0] == s[-1]) and s.startswith(("'", '"')): return s[1:-1] return s 

说明:

startswith可以采取一个元组,以匹配任何几个select。 DOUBLED括号(())是为了指定允许的前缀,而不是两个参数"'"'"' ,我们传递一个参数("'", '"')startswith()这将被解释为一个前缀和一个(无效的)开始位置。

s[-1]是string中的最后一个字符。

testing:

 print( dequote("\"he\"l'lo\"") ) print( dequote("'he\"l'lo'") ) print( dequote("he\"l'lo") ) print( dequote("'he\"l'lo\"") ) 

=>

 he"l'lo he"l'lo he"l'lo 'he"l'lo" 

(对我来说,正则expression式是不明显的,所以我没有试图扩展@ Alex的答案。)

几乎完成。 从http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip引用;

chars参数是一个string,指定要删除的字符集。

[…]

字符参数不是前缀或后缀; 相反,它的值的所有组合都被剥离了:

所以这个论点不是一个正则expression式。

 >>> string = '"" " " ""\\1" " "" ""' >>> string.strip('"') ' " " ""\\1" " "" ' >>> 

请注意,这不是你要求的,因为它从string的两端吃了多个引号!

如果string始终如您所示:

 string[1:-1] 

如果你确定有一个“开始和结束,你想删除,只是做:

 string = string[1:len(string)-1] 

要么

 string = string[1:-1] 

find你的string中第一个和最后一个“的位置

 >>> s = '"" " " ""\\1" " "" ""' >>> l = s.find('"') >>> r = s.rfind('"') >>> s[l+1:r] '" " " ""\\1" " "" "' 

我有一些需要去掉单引号或双引号的代码,而且我不能简单地用ast.literal_eval它。

 if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]: arg = arg[1:-1] 

这与ToolmakerSteve的答案类似,但允许长度为0的string,并且不会将单个字符"转换为空string”。

在你的例子中,你可以使用strip,但你必须提供空间

 string = '"" " " ""\\1" " "" ""' string.strip('" ') # output '\\1' 

请注意输出中的\是标准的Python输出的string输出

你的variables的值是'\\ 1'