bskay 发表于 2012-08-29 08:57

在一个原始字符串的最后一位放\失败了??

sReExpr = r'\as\n{fdggrft}\'

想要上面的表达式,由于各种原因,主要是pythonic的关系,不能用转义
正好 最后一位是 \

郁闷了,哈哈

majiayang2012 发表于 2012-08-29 09:30

......最后一位\用(\)试试,,,

Hadron74 发表于 2012-08-29 17:09

回复 1# bskay

用+'\\'试试


   

bskay 发表于 2012-08-29 17:28

各位,请注意 pythonic

106033177 发表于 2012-08-30 19:23

本帖最后由 106033177 于 2012-08-30 19:27 编辑

回复 1# bskay
这个算是一个瑕疵吧,没有办法解决,但是文档里已经明确告诉你不可以了。
只能sReExpr = '\\as\\n{fdggrft}\\'
http://docs.python.org/reference/lexical_analysis.html
String quotes can be escaped with a backslash, but the backslash remains in the string; for example, r"\"" is a valid string literal consisting of two characters: a backslash and a double quote; r"\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character).

   

bskay 发表于 2012-09-03 17:11

回复 5# 106033177


    能不能讲下。为什么要这样规定呢。应该有它的原因吧

cdtits 发表于 2012-09-03 17:21

sReExpr = r'\as\n{fdggrft}\\'

106033177 发表于 2012-09-04 09:01

回复 7# cdtits
r'\as\n{fdggrft}\\' 和'\\as\\n{fdggrft}\\'  这两个字符串是一样的吗?

   

106033177 发表于 2012-09-04 09:16

bskay 发表于 2012-09-03 17:11 static/image/common/back.gif
回复 5# 106033177
能不能讲下。为什么要这样规定呢。应该有它的原因吧

回复 6# bskay
原因就是反斜杠会和后面的引号发生转意.具体的原因应该是由于python字符串字面语法定义导致的
stringliteral   ::=(shortstring | longstring)
stringprefix    ::="r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"
                     | "b" | "B" | "br" | "Br" | "bR" | "BR"
shortstring   ::="'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring      ::="'''" longstringitem* "'''"
                     | '"""' longstringitem* '"""'
shortstringitem ::=shortstringchar | escapeseq
longstringitem::=longstringchar | escapeseq
shortstringchar ::=<any source character except "\" or newline or the quote>
longstringchar::=<any source character except "\">
escapeseq       ::="\" <any ASCII character>

syshack 发表于 2012-10-08 20:43

和pythonic嘛关系?你觉得怎么样的代码才pythonic
页: [1] 2
查看完整版本: 在一个原始字符串的最后一位放\失败了??