【问题标题】:Why is the string automatically being changed? Is it because of backslash \ in the string? [duplicate]为什么字符串会自动更改?是因为字符串中的反斜杠 \ 吗? [复制]
【发布时间】:2020-11-15 03:41:46
【问题描述】:

假设我分配变量

x = '\\dnassmb1\biloadfiles_dev\Workday'
print(x)

输出:

'\\dnassmb1\x08iloadfiles_dev\\Workday'

我想知道为什么它具体更改为“x08..”,以及如何避免这种自动更改并按原样使用字符串。谢谢!

【问题讨论】:

标签: python string printing


【解决方案1】:

你做错了。在字符串中使用时,反斜杠在 pyhton 中具有不同的含义。 反斜杠实际上用于在字符串中放置一些特殊字符。 如果你想打印上面的字符串;

x = '\\\dnassmb1\\biloadfiles_dev\\Workday'
print(x)

如果你得到了这个,我会在我想要打印反斜杠的任何地方使用额外的反斜杠。这是因为第一个反斜杠表示它后面的内容只是字符串的一部分,没有特殊含义。

【讨论】:

  • 我认为我的回答对你有用。将其标记为已接受。
【解决方案2】:

使用原始字符串:

x = r'\\dnassmb1\biloadfiles_dev\Workday'

这将防止 python 将您的反斜杠视为转义序列。有关字符串解析的完整处理,请参阅 Python 文档中的 string and byte literals

这里要密切注意representationvalue之间的区别。仅仅因为一个字符串看起来有四个反斜杠,并不意味着这些反斜杠在字符串的值中。考虑:

>>> x =  '\\dnassmb1\biloadfiles_dev\Workday'  # regular string
>>> y = r'\\dnassmb1\biloadfiles_dev\Workday'  # raw string
>>> print(x); print(y)
\dnassmbiloadfiles_dev\Workday
\\dnassmb1\biloadfiles_dev\Workday

这里,x 和 y 都只是字符串,一旦 Python 解析了它们。但是即使引号内的部分相同,字符串的字节也是不同的。在y 的情况下,您可以准确地看到您输入的反斜杠的数量。

【讨论】:

  • 嘿,谢谢你的回答!输出是: '\\\\dnassmb1\\biloadfiles_dev\\Workday' 有没有办法让它正好 '\\' 斜线超过 4 哈哈?
  • 看看我的回答
  • @TejasKrishnaReddy 我更新了我的答案——我认为你将表示与价值混淆了。如果您想要输入的确切字符串,请将其写为原始字符串,并带有您想要的反斜杠数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
相关资源
最近更新 更多