2013-02-17 29 views
0

我正在Python中使用正则表达式。我想匹配插入到以下划线开头和结尾的数据库中的CSV文件的几行内容。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文件的行。

任何帮助,将不胜感激。

+0

如果不知道“row [4]”的内容以及您想要匹配的内容,就无法回答这个问题。你知道有些情况是以'_'开始和结尾的,它们是*不匹配吗? – 2013-02-17 16:17:27

+0

unicode(row [4],“utf8”)=(_aaaaa bbbb ccccc 5635!fgsfrq._)假设这是我的字符串,我想匹配像这样开始和以_结尾的几个字符串,并且它应该与该常规匹配表达式 – Gayathri 2013-02-17 16:19:49

+0

你为什么期望匹配这个正则表达式?它不会以'_'开始和结束。 – 2013-02-17 16:20:26

回答

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”而不是“_”在这种情况下,正则表达式将不匹配的字符串。

FILE.CSV

_abdlfla_ 
sldjlfds_ 
_adlfdls 
_132jdlfjflds_ 

输出

_abdlfla_ 
_132jdlfjflds_ 
+0

非常感谢!有效! – Gayathri 2013-02-17 18:13:26

+0

如果你包含了一个关于为什么使用_strip_解决问题的句子,我会倾向于upvote。 – 2013-02-17 18:15:09

+0

@HonestAbe补充说,谢谢。 – Anil 2013-02-18 04:11:31

0

您可以使用startswith和功能的endsWith重新代替的。使用re的任何具体原因?

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