Python中的正则表达式,用于匹配CSV文件中的字符串

时间:2013-02-17 16:04:06

标签: python regex

我正在使用Python中的正则表达式。我想匹配插入数据库的CSV文件中的几行,该数据库以下划线开头和结尾。

我在Python脚本中使用了正则表达式来执行相同操作,但它将结果打印为“none”。这是我的相同代码,请告诉我我犯了什么错误:

reg = re.compile(r'^_.*_$',re.I)
imatch = reg.match(unicode(row[4], "utf8"))

这里r'^_.*_$',re.I是我的正则表达式,用于匹配以_开头和结尾的行。 unicode(row[4], "utf8")指定插入数据库的CSV文件中的行。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

import re
lines = [line.strip() for line in open('file.csv')]
for x in lines:
    match=re.search(r'^_.*_$',x)
    if match: print x

我们必须去除每一行,否则每行以char'\ n'而不是'_'结尾,在这种情况下,regex将不匹配该字符串。

FILE.CSV

_abdlfla_
sldjlfds_
_adlfdls
_132jdlfjflds_

输出

_abdlfla_
_132jdlfjflds_

答案 1 :(得分:0)

您可以使用startswith和endswith函数而不是re。使用re的任何具体原因?

for l in open('test.csv'):
    l=l.strip()
    if l.startswith('_') and l.endswith('_'):
        print(l)