使用Python中的正则表达式进行搜索和替换

时间:2013-10-23 18:08:40

标签: python regex

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

示例推文如下:

@ 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()

感谢您的帮助!

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

>>> re.sub("([@$#]) ", r"\1", "@ sample This is a sample string $ 1.00 # sample")
'@sample This is a sample string $1.00 #sample'

答案 2 :(得分:0)

这看起来很不错。

print re.sub(r'([@$])\s+',r'\1','@ blah $ 1')