当前在线人数16190
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章
未名交友
[更多]
[更多]
问个PYTHON烂问题
[版面:葵花宝典][首篇作者:yeeha] , 2017年05月17日14:09:00
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
yeeha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: yeeha (带茎番茄), 信区: Programming
标  题: 问个PYTHON烂问题
发信站: BBS 未名空间站 (Wed May 17 14:09:00 2017, 美东)

为啥第一个没做替换?  如果是RAW STRING, 应该是MATCH的啊, 反而第二个没用’r
', 不是RAW STRING啊


1. >>> re.sub(r'x\nxx', 'zzz', r'aaax\nxxyyy')
'aaax\nxxyyy'


2. >>> re.sub(r'x\nxx', 'zzz', 'aaax\nxxyyy')
'aaazzzyyy'

--
※ 修改:·yeeha 於 May 17 14:15:34 2017 修改本文·[FROM: 50.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
verdelite
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: verdelite (石头), 信区: Programming
标  题: Re: 问个PYTHON烂问题
发信站: BBS 未名空间站 (Wed May 17 21:41:34 2017, 美东)

哎,我是能不用re就不用re,容易出错,难debug,完全和python的初衷相反啊。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

 
convergence
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: convergence (Rex💪🐶🐱🌎&), 信区: Programming
标  题: Re: 问个PYTHON烂问题
发信站: BBS 未名空间站 (Fri May 19 11:11:43 2017, 美东)

什么是raw string,你说说。


【 在 yeeha (带茎番茄) 的大作中提到: 】
: 为啥第一个没做替换?  如果是RAW STRING, 应该是MATCH的啊, 反而第二个没用
’r
: ', 不是RAW STRING啊
: 1. >>> re.sub(r'xnxx', 'zzz', r'aaaxnxxyyy')
: 'aaaxnxxyyy'
: 2. >>> re.sub(r'xnxx', 'zzz', 'aaaxnxxyyy')
: 'aaazzzyyy'



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 65.]

 
indepthing
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: indepthing (dakeng), 信区: Programming
标  题: Re: 问个PYTHON烂问题
发信站: BBS 未名空间站 (Fri May 19 15:38:11 2017, 美东)


In your code, r'x\nxx' is pattern, and r'aaax\nxxyyy' is the string to match.
You need to remove 'r' to get right. r'aaax\nxxyyy' is raw string
interpreted as [ aaax\nxxyyy ], However, 'aaax\nxxyyy' is NOT raw string, '\
n' is interpreted as new line;

If the pattern isn’t found, meaning xNEWLINExx is not equal to [x\nxx],
string is returned unchanged. That's why you get your first results.

Make sure the pattern get match.

Hope this helps!


【 在 yeeha (带茎番茄) 的大作中提到: 】
: 为啥第一个没做替换?  如果是RAW STRING, 应该是MATCH的啊, 反而第二个没用
’r
: ', 不是RAW STRING啊
: 1. >>> re.sub(r'xnxx', 'zzz', r'aaaxnxxyyy')
: 'aaaxnxxyyy'
: 2. >>> re.sub(r'xnxx', 'zzz', 'aaaxnxxyyy')
: 'aaazzzyyy'








--
※ 修改:·indepthing 於 May 19 15:43:09 2017 修改本文·[FROM: 12.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 12.]

 
DesertEagle
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: DesertEagle (沙漠之鹰), 信区: Programming
标  题: Re: 问个PYTHON烂问题
发信站: BBS 未名空间站 (Sat May 20 21:44:29 2017, 美东)

http://stackoverflow.com/questions/30164054/raw-string-and-regular-expression-in-python

re.sub?
re.sub(pattern, repl, string)

pattern是个string literal,pattern里的r'\n'就是literally存储为'\n'。而string
里的r'\n'存储为'\\n',所以第一个不会match。

你可以试试:
re.sub('\n', 'Match!', '\n')
re.sub('\\n', 'Match!', '\n')
re.sub('\\\n', 'Match!', '\n')
re.sub('\\\\n', 'Match!', '\n')

【 在 yeeha (带茎番茄) 的大作中提到: 】
: 为啥第一个没做替换?  如果是RAW STRING, 应该是MATCH的啊, 反而第二个没用
’r
: ', 不是RAW STRING啊
: 1. >>> re.sub(r'xnxx', 'zzz', r'aaaxnxxyyy')
: 'aaaxnxxyyy'
: 2. >>> re.sub(r'xnxx', 'zzz', 'aaaxnxxyyy')
: 'aaazzzyyy'












--
※ 修改:·DesertEagle 於 May 20 21:49:34 2017 修改本文·[FROM: 108.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 108.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996