我不明白原始字符串文字是如何工作的.我知道在使用r它时会忽略所有特殊内容,比如在执行\n此操作时将其视为\n而不是新行.但后来我试着这样做:
x = r'\'
Run Code Online (Sandbox Code Playgroud)
它说SyntaxError: EOL while scanning string literal而不是'\'
为什么?我没弄错吗?以及对此的解释是什么:
print r'\\' # gives '\\'
print r'\\\' # gives SyntaxError
Run Code Online (Sandbox Code Playgroud)
将单个引号放入以单引号开头的字符串的唯一方法是逃避它.因此,当您使用未转义的反斜杠后跟引号字符时,原始和常规字符串文字都将允许转义引号字符.由于要求必须有一种方法来表示以单引号(或双引号)开头的字符串文字中的单引号(或双引号),因此'\'无论您使用原始字符串文字还是常规字符串文字,字符串文字都是不合法的.
要获得具有奇数个文字反斜杠的任意字符串,我认为最好的方法是使用常规字符串文字.这是因为尝试使用r'\\'会起作用,但它会给你一个带有两个反斜杠而不是一个反斜杠的字符串:
>>> '\\' # A single literal backslash.
'\\'
>>> len('\\')
1
>>> r'\\' # Two literal backslashes, 2 is even so this is doable with raw.
'\\\\'
>>> len(r'\\')
2
>>> '\\'*3 # Three literal backslashes, only doable with ordinary literals.
'\\\\\\'
>>> len('\\'*3)
3
Run Code Online (Sandbox Code Playgroud)
这个答案只是为了补充另一个.
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |