2

我是 Python 新手,最近在我正在上的一门课上,我们开始了巨龙领域教程。http://inventwithpython.com/chapter6.html我决定独自完成这个小项目,制作一个半长的冒险故事。大约进行到一半时,我开始将文本粘贴到 Word 中。(我使用的是我之前在 Flash 中制作的冒险故事,所以所有的测试都已经写好了)。我开始粘贴到 word 中,这样我可以更快地替换 ' with ' 和 "with \",因为它们有很多而且占用了很多时间。当我运行它时,我发现了一些奇怪的东西。我直接从 Flash 复制的文本需要反斜杠才能正确显示 ' 或 ",但我从 Word 复制的文本不需要。当我运行它时,我从 word 复制的文本会显示反斜杠。

例如:

“这是新人?”金发男子问道。
“是的,莉莉,”雷切尔兴高采烈地回答。

这就是我运行它时将显示的内容。如果我取出反斜杠并运行它,它将打印:

“这是新人?” 金发女郎问道。
“是的,莉莉,”雷切尔高兴地回答。

但是我从 Flash 复制的文本可以正常使用反斜杠,如果我将它们取出,它会导致某种错误。

有人可以向我解释为什么如果我从 Word 复制文本就不需要反斜杠了吗?如果有人想知道我正在使用 Python 3.2.2,我还没有在 2.7 中对其进行测试。

4

2 回答 2

7

Word 是一个糟糕的代码编辑器。

引号被替换为“花式”引号,而不是 ASCII 字母表中的普通双引号,而是 Unicode 标准中其他地方的双引号:

>>> u'”'
u'\u201d'

我的 Unicode 应用程序告诉我这是正确的双引号符号;Word 通常也使用匹配的左双引号符号。

如果要在 python 字符串中使用双引号,只需将整个字符串括在引号中:

'I am a string with a double (") quote'

或者您可以使用三重引用:

"""I am a string with both singe (') *and* double (") quotes"""

这样你就不必为所有这些逃跑而烦恼。

于 2012-11-01T16:35:40.370 回答
0

这是因为\转义了", 并且 python 没有在字符串中找到任何右引号,所以它会引发EOL错误:

In [19]: "This the newbie\ "  #add a space after `\` and it works
Out[19]: 'This the newbie\\ '

In [20]: "This the newbie\" 
------------------------------------------------------------
   File "<ipython console>", line 1
     "This the newbie\"
                       ^
SyntaxError: EOL while scanning string literal


In [22]: "\"This the newbie\"" 
Out[22]: '"This the newbie"'
于 2012-11-01T16:35:01.980 回答