linlone 发表于 2014-08-06 14:44

使用re.sub(),如何将微博数据“@xx”替换成“@...”

本帖最后由 linlone 于 2014-08-06 14:46 编辑

data = "@t @bb @nn:@tt:@oo @xy"
ddata2 = re.sub(ur'(?<=@)(.+?)(?=[ |:])', '...',   data)
print ddata2以上语句执行之后,输出:@... @... @...:@...:@... @xy最后那个xy没有替换成“...”,如何解决呢?



zerostudy 发表于 2014-08-06 14:53

ddata2 = re.sub(r'(?<=@)[^ :]+', '...',   data)改成这样。

linlone 发表于 2014-08-06 15:22

本帖最后由 linlone 于 2014-08-06 15:23 编辑

回复 2# zerostudy


    牛,搞定了

另外:data = "@t@bb @nn//@tt:@oo:@xy"
ddata2 = re.sub(ur'(?<=@)[^@ ::/]+', '...',   data)
print ddata2输出:@...@... @...//@...:@...@...为什么倒数第二个@中的全角“:”在输出中丢失了呢?
我期望输出:@...@... @...//@...:@...:@...

zerostudy 发表于 2014-08-06 15:41

ddata2 = re.sub(r'(?<=@).*?(?=:| |/|:|@)', '...',   data)还是改成你第一个的那样。估计[]里面只接收acs码的字符,要是宽字符,应是要用\x 这种方式。

linlone 发表于 2014-08-06 16:00

回复 4# zerostudy


    改成这样就ok了:data = "@t@bb @nn//@tt:@oo:@xy"
ddata2 = re.sub(r'(?<=@)[^@ ::/]+', '...',   data)
print ddata2

q1208c 发表于 2014-08-06 17:13

re.UNICODE ? :em14::em14:

linlone 发表于 2014-08-06 20:05

本帖最后由 linlone 于 2014-08-06 20:09 编辑

data = "@bb @李欣毅V-香舍网”资和“你的"
ddata2 = re.sub(r'(?<=@)[^ “]+', '...',   data)
print ddata2

输出:@--- @---“你的

我期望输出:@--- @---”资和“你的

这个问题如何解决呢

linlone 发表于 2014-08-06 20:29

回复 7# linlone


    解决了,原来是“”写反了。下面这样就可以了:data = "@bb @李欣毅V-香舍网”资和“你的"
ddata2 = re.sub(r'(?<=@)[^ “”]+', '...',   data)
print ddata2
页: [1]
查看完整版本: 使用re.sub(),如何将微博数据“@xx”替换成“@...”