2013-02-17 37 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) 
相關問題