string - python 如何去掉第一个和最后一个双引号

我想把双引号


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

变成


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

我试图使用rstrip,lstrip和strip('[^"] | ["$]') ,但是没有用。

我该怎么做?

时间:

string =string[1:-1]

如果不能假定处理的字符串有双引号,则可以使用如下所示的内容:


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


import re

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

重要:我扩展问题/答案带单引号或双引号。 我解释了这个问题,这意味着两个引号必须存在,并且匹配,以执行条带。 否则,字符串将原封不动地返回。

要对字符串表示形式进行"dequote"操作,可以在它的周围加上单引号或者双引号:


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 可以接受元组,以匹配多个替代项。 括号 (())的原因是,我们将一个参数 ("'",'"') 传递给 startswith(),以指定允许的前缀,而不是两个参数 "'"'"',这将解释为前缀和( 无效) 起始位置。

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

测试:


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"

( 对于我来说,正规表达式 表达式是non-obvious的,所以我没有尝试扩展 @Alex's 答案。)

如果字符串始终显示为:

 
string[1:-1]

 

http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip

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

[... ]

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


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

如果确定有"开始"和"末尾",你要删除,只需执行以下操作:


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

或者


string = string[1:-1]

查找字符串中第一个和最后一个"的位置


>>> s = '""""""1""""""'
>>> l = s.find('"')
>>> r = s.rfind('"')

>>> s[l+1:r]
'"""""1"""""'

...