我想从
中删除双引号string = '"" " " ""\\1" " "" ""'
成为
string = '" " " ""\\1" " "" "'
我尝试使用rstrip
,lstrip
和strip('[^\"]|[\"$]')
,但它不起作用。
我该怎么做? 谢谢你的帮助。
答案 0 :(得分:167)
如果你想要剥离的报价总是像你说的那样“先行和最后”,那么你可以简单地使用:
string = string[1:-1]
答案 1 :(得分:85)
如果您不能假设您处理的所有字符串都有双引号,您可以使用以下内容:
if string.startswith('"') and string.endswith('"'):
string = string[1:-1]
修改强>
我确信您刚刚使用string
作为变量名称来举例说明,在您的实际代码中它有一个有用的名称,但我觉得有必要警告您有一个名为{{3的模块在标准库中。它没有自动加载,但是如果您使用import string
,请确保您的变量不会遮挡它。
答案 2 :(得分:41)
删除第一个和最后一个字符,并且在每种情况下仅在相关字符是双引号时才执行删除:
import re
s = re.sub(r'^"|"$', '', s)
请注意,RE模式与您给出的模式不同,操作为sub
(“替换”),空替换字符串(strip
是一个字符串方法,但做了一些漂亮的事情与您的要求不同,正如其他答案所示)。
答案 3 :(得分:39)
重要提示:我正在扩展问题/答案,以删除单引号或双引号。我解释这个问题意味着BOTH引号必须存在并匹配才能执行条带。否则,字符串将保持不变。
要“取消引用”一个字符串表示形式,它可能有单引号或双引号(这是@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
可以采用元组,以匹配任何一种替代方案。 DOUBLED括号((
和))
的原因是我们将一个参数("'", '"')
传递给startswith()
,以指定允许的前缀,而不是两个参数{{1} }和"'"
,它将被解释为前缀和(无效)起始位置。
'"'
是字符串中的最后一个字符。
测试:
s[-1]
=>
print( dequote("\"he\"l'lo\"") )
print( dequote("'he\"l'lo'") )
print( dequote("he\"l'lo") )
print( dequote("'he\"l'lo\"") )
(对我来说,正则表达式是非常明显的,所以我没有尝试扩展@Alex的答案。)
答案 4 :(得分:10)
如果字符串始终如您所示:
string[1:-1]
答案 5 :(得分:9)
几乎完成了。引自http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip
chars参数是一个字符串 指定要设置的字符集 除去。
[...]
chars参数不是前缀或 后缀;相反,所有的组合 它的值被剥离了:
所以论证不是正则表达式。
>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>>
请注意,这并不是您所要求的,因为它会从字符串的两端使用多个引号!
答案 6 :(得分:4)
如果你确定“在开头和结尾都有你要删除的内容,请执行以下操作:
string = string[1:len(string)-1]
或
string = string[1:-1]
答案 7 :(得分:2)
从字符串的开头和结尾删除一个确定的字符串。
s = '""Hello World""'
s.strip('""')
> 'Hello World'
答案 8 :(得分:1)
我有一些代码需要删除单引号或双引号,我不能简单地使用ast.literal_eval它。
if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]:
arg = arg[1:-1]
这类似于ToolmakerSteve的答案,但它允许0个长度字符串,并且不会将单个字符"
变成空字符串。
答案 9 :(得分:0)
找到字符串中第一个和最后一个的位置
>>> s = '"" " " ""\\1" " "" ""'
>>> l = s.find('"')
>>> r = s.rfind('"')
>>> s[l+1:r]
'" " " ""\\1" " "" "'
答案 10 :(得分:0)
在你的例子中你可以使用strip但你必须提供空间
string = '"" " " ""\\1" " "" ""'
string.strip('" ') # output '\\1'
注意\'在输出中是字符串输出的标准python引号
您的变量的值是' \\ 1'
答案 11 :(得分:0)
从Python 3.9
开始,您可以使用removeprefix
和removesuffix
:
'"" " " ""\\1" " "" ""'.removeprefix('"').removesuffix('"')
# '" " " ""\\1" " "" "'
答案 12 :(得分:-1)
下面的函数将剥离空的spces并返回没有引号的字符串。如果没有引号,那么它将返回相同的字符串(剥离)
yield Request(url=urljoin(response.url, str(s)), \
callback=self.parse, meta={"item": item}, priority=-1)