python 、thonny
这是今天海哥给出的一道习题:
如何输出'我们\马达'
中的\
?
如下是我的一些尝试:
- 报错:
>>> re.findall('\\','我们的\马达')
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
File "D:\Program Files\Thonny\lib\re.py", line 223, in findall
return _compile(pattern, flags).findall(string)
File "D:\Program Files\Thonny\lib\re.py", line 286, in _compile
p = sre_compile.compile(pattern, flags)
File "D:\Program Files\Thonny\lib\sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "D:\Program Files\Thonny\lib\sre_parse.py", line 922, in parse
source = Tokenizer(str)
File "D:\Program Files\Thonny\lib\sre_parse.py", line 232, in __init__
self.__next()
File "D:\Program Files\Thonny\lib\sre_parse.py", line 246, in __next
self.string, len(self.string) - 1) from None
re.error: bad escape (end of pattern) at position 0
- 正确写法:
>>> re.findall(r'\\','我们的\马达')
['\\']
>>> re.findall('\W','我们的\马达')
['\\']
- 其他写法
>>> print('\\')
\
>>> print(re.findall('\W','我们的\马达'))
['\\']
>>> print(re.search('\W','我们的\马达'))
<re.Match object; span=(3, 4), match='\\'>
- 其他引申:
>>> a = ['\\']
>>> b = [r'\\']
>>> print(a)
['\\']
>>> print(b)
['\\\\']
>>> print(a[0])
\
>>> print(a[1])
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
IndexError: list index out of range
>>> print(b[0])
\\
>>> print(b[1])
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
IndexError: list index out of range
注意:
- 在列表里必须用
\\
才表示\
- print输出结果
\
就是\
- 联想1
>>> print('我们的\马达')
我们的\马达
>>> print('我们的\\马达')
我们的\马达
>>> print('我们的\\\马达')
我们的\\马达
>>> print('我们的\\\\马达')
我们的\\马达
>>> print('我们的\\\\\马达')
我们的\\\马达
>>> print('我们的\\\\\\马达')
我们的\\\马达
>>> print('我们的\\\\\\\马达')
我们的\\\\马达
>>> print('我们的\\\\\\\\马达')
我们的\\\\马达
其中的\
默认会先进行转义,主要看print(),它才代表输出!!
- 联想2
>>> '我们的\马达'
'我们的\\马达'
>>> '我们的\\马达'
'我们的\\马达'
>>> '我们的\\\马达'
'我们的\\\\马达'
>>> '我们的\\\\马达'
'我们的\\\\马达'
>>> '我们的\\\\\马达'
'我们的\\\\\\马达'
>>> '我们的\\\\\\马达'
'我们的\\\\\\马达'
网友评论