|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import re
- tx = 'aa,bb!cc! dd/ ee\ ff gg hh'
- print(re.split(';| |,|\*|\n|//|!|\\',tx))
复制代码
替换\符号的时候报错
如果不去除字符串中的\ 只写 ';| |,|\*|\n|//|!'
- import re
- tx = 'aa,bb!cc! dd/ ee\ ff gg hh'
- print(re.split(';| |,|\*|\n|//|!',tx))
复制代码
输出结果又会变成ee\\这样,多出了\
- ['aa', 'bb', 'cc', '', 'dd/', 'ee\\', 'ff', 'gg', 'hh']
复制代码
所以如何正确替换\和为啥第二段代码\变成\\?
这是输出结果:
- ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'xx', 'yy', 'zz', 'AA']
- ['\\']
- ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'xx', 'yy', 'zz', 'AA']
- ['\\']
- ['\\']
复制代码
下面这是为啥ee\打印出来是'ee\\'的解释,不知道我写的容不容易理解:
- # 斜杠\元素会把该符号后面的引号转义为普通的引号,即将引号'视为元素的一部分,而不再视为字符串的结尾。因此,计算机需要再用一个\把反斜杠转义掉,避免发生上述情况,否则将产生语法错误:
- print(['\\']) # 不会报错
- # print(['\']) # 语法错误:SyntaxError: unterminated string literal (字符串未结束,因\后的引号被转义,导致该引号被视为字符串的一部分,而非字符串的结尾)
- # 若按字符串形式打印反斜杠\,且\不位于字符串结尾的引号前,则打印出来的字符串只有1个\:
- text1 = 'ee\ ff'
- i = 0
- for each in text1:
- print('第%d个元素的列表形式 ---> %s 和字符串形式 ---> %s' % (i, list(each), each))
- i += 1
复制代码
输出结果:
- 第0个元素的列表形式 ---> ['e'] 和字符串形式 ---> e
- 第1个元素的列表形式 ---> ['e'] 和字符串形式 ---> e
- 第2个元素的列表形式 ---> ['\\'] 和字符串形式 ---> \
- 第3个元素的列表形式 ---> [' '] 和字符串形式 --->
- 第4个元素的列表形式 ---> ['f'] 和字符串形式 ---> f
- 第5个元素的列表形式 ---> ['f'] 和字符串形式 ---> f
复制代码
|
|