4

我有一个充满推文的日志文件。每条推文都在自己的行上,这样我就可以轻松地遍历文件。

一个示例推文将是这样的:

@ sample This is a sample string $ 1.00 # sample

我希望能够通过删除特殊字符和以下字母数字字符之间的空格来稍微清理一下。“@s”、“$1”、“#s”

所以它看起来像这样:

@sample This is a sample string $1.00 #sample

我正在尝试使用正则表达式来匹配这些实例,因为它们可以是可变的,但我不确定如何去做。

我一直在使用 re.sub() 和 re.search() 来查找实例,但我正在努力弄清楚如何在保持字符串完整的同时仅删除空格。

这是我到目前为止的代码:

#!/usr/bin/python

import csv
import re
import sys
import pdb
import urllib

f=open('output.csv', 'w')

with open('retweet.csv', 'rb') as inputfile:
    read=csv.reader(inputfile, delimiter=',')
    for row in read:
        a = row[0]
        matchObj = re.search("\W\s\w", a)
        print matchObj.group()

f.close()

谢谢你的帮助!

4

3 回答 3

5

像这样使用re.sub

>>> import re
>>> strs = "@ sample This is a sample string $ 1.00 # sample"
>>> re.sub(r'([@#$])(\s+)([a-z0-9])', r'\1\3', strs, flags=re.I)
'@sample This is a sample string $1.00 #sample'
于 2013-10-23T18:20:08.297 回答
1
>>> re.sub("([@$#]) ", r"\1", "@ sample This is a sample string $ 1.00 # sample")
'@sample This is a sample string $1.00 #sample'
于 2013-10-23T18:25:35.300 回答
0

这似乎工作得很好。

print re.sub(r'([@$])\s+',r'\1','@ blah $ 1')
于 2013-10-23T18:23:11.740 回答