python我怎样才能去掉第一个和最后一个双引号
我想剥去双引号
string = '"" " " ""\\1" " "" ""'
成为
string = '" " " ""\\1" " "" "'
我试图使用rstrip
, lstrip
和strip('[^\"]|[\"$]')
但它不起作用。
我怎样才能做到这一点? 感谢你们对我的帮助。
如果您想要删除的引号总会像您所说的那样是“第一个和最后一个”,那么您可以简单地使用:
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'