如何使用反斜杠打印此字符串

时间:2015-02-26 14:46:15

标签: python string

更新澄清

我必须从服务器复制功能。这个旧服务器的响应之一是http://test.muchticket.com/api/?token=carlos&method=ventas&ESP=11,除了双斜杠应该是单一的。

更新结束

更新第2号以澄清

然后这个变量转到一个字典,用它来转储到HttpResponse

return HttpResponse(json.dumps(response_data,sort_keys=True), content_type="application/json")

我讨厌我的工作。

更新结束

我需要将'http:\/\/shop.muchticket.com\/'存储在变量中。然后将其保存在字典中。我尝试了几种不同的方法,但它们似乎都没有用,这里有一些我尝试过的例子:

url = 'http:\/\/shop.muchticket.com\/'
print url

>> http:\\/\\/shop.muchticket.com\\/

使用原始

url = r'http:\/\/shop.muchticket.com\/'
print url

>> http:\\/\\/shop.muchticket.com\\/

使用转义字符

url = 'http:\\/\\/shop.muchticket.com\\/'
print url

>> http:\\/\\/shop.muchticket.com\\/

原始和转义字符

url = r'http:\\/\\/shop.muchticket.com\\/'
print url

>> http:\\\\/\\\\/shop.muchticket.com\\\\/

转义字符并解码

url = 'http:\\/\\/shop.muchticket.com\\/'
print url.decode('string_escape')

>> http:\\/\\/shop.muchticket.com\\/

仅解码

url = 'http:\/\/shop.muchticket.com\/'
print url.decode('string_escape')

>> http:\\/\\/shop.muchticket.com\\/

3 个答案:

答案 0 :(得分:2)

最好的方法是不使用任何转义序列

>>> s =  'http://shop.muchticket.com/'
>>> s
'http://shop.muchticket.com/'
>>> print(s)
http://shop.muchticket.com/

与"其他"不同。语言,你不需要在Python中转义正斜杠(/)!

如果你需要正斜杠那么

>>> s =  'http:\/\/shop.muchticket.com\/'
>>> print(s)
http:\/\/shop.muchticket.com\/

注意:当您在解释器中输入s时,它会为您提供repr输出,从而获得转义的正斜杠

>>> s
'http:\\/\\/shop.muchticket.com\\/'   # Internally stored!!!
>>> print(repr(s))
'http:\\/\\/shop.muchticket.com\\/'

因此,拥有一个\足以将其存储在变量中。

正如J F S所说,

  

为避免含糊不清,请使用原始字符串文字或转义   如果你想在字符串中使用文字反斜杠,则使用反斜杠。

因此你的字符串将是

s =  'http:\\/\\/shop.muchticket.com\\/'  # Escape the \ literal
s = r'http:\/\/shop.muchticket.com\/'     # Make it a raw string

答案 1 :(得分:1)

如果字符串中需要两个字符:反斜杠(REVERSE SOLIDUS)和正斜杠(SOLIDUS)则所有三个 Python字符串文字生成相同的字符串对象

>>> '\/' == r'\/' == '\\/' == '\x5c\x2f'
True
>>> len(r'\/') == 2
True

编写它的最佳方式是:r'\/''\\/'

原因是反斜杠是字符串文字中的一个特殊字符(你在Python源代码中编写的东西(通常是手工编写))如果后跟某些字符,例如{{ 1}}是单个字符(换行符),'\n'也是单个字符(反斜杠)。但'\\'不是转义序列,因此它是两个字符。为避免歧义,请使用反斜杠没有特殊含义的原始字符串文字'\/'

REPL在字符串上调用r'\/'来打印它:

repr

>>> r'\/' '\\/' >>> print r'\/' \/ >>> print repr(r'\/') '\\/' 显示您的Python字符串文字(如何在Python源代码中编写它)。 repr()是一个两个字符的字符串,而不是三个字符串。不要混淆用于创建字符串的字符串文字和字符串对象本身。

并测试理解:

'\\/'

它显示字符串表示的表示。

答案 2 :(得分:1)

对于Python 2.7.9,运行:

url = "http:\/\/shop.muchticket.com\/"
print url

结果:

>> http:\/\/shop.muchticket.com\/

您使用的Python版本是什么?从Bhargav Rao's answer开始,它似乎也适用于Python 3.X,所以也许这是一些奇怪的导入?