python 2.7中的正则表达式和csv问题

时间:2011-11-15 03:56:56

标签: python regex csv screen-scraping

使用以下方法解决问题(对于其余问题,将更改我的代码)。很抱歉我的帖子中的代码格式不正确。

import csv, re, mechanize  

htmlML = br.response().read() 

#escaping ? fixed the regex match 
patMemberName = re.compile('<a href=/foo.php\?XID=(d+) ><font color=#000000><b>(.*) </b>') 
searchMemberName = re.findall(patMemberName,htmlML)

MembersCsv = 'path-to-csv' 
MemberWriter = csv.writer(open(MembersCsv, 'wb')) #adding b fixed the \n in csv

for i in searchMemberName:
    MemberWriter.writerow(i)
    print (i)

感谢您的时间

2 个答案:

答案 0 :(得分:0)

不幸的是,我现在找不到适当的Python转义序列。通常,您可以使用不应在“\ Q ... \ E”中解释的元字符包装表达式。

尝试将字符串包装在re.escape(string)中。所以:

re.compile(re.escape('<font color=#000000><b>(.*)</b>'))

答案 1 :(得分:-1)

对于问题1),你必须逃避模式中的?

import re

htmlML = '<a href=/foo.php?XID=123 ><font color=#000000><b>user</b>'
patMemberID = re.compile('<a href=/foo.php\?XID=(\d*) ><font color=#000000><b>user</b>')

searchMemberID = re.findall(patMemberID, htmlML)
print len(searchMemberID)

for i in searchMemberID:
    print (i)

然后可以从字符串

中提取123

问题2a)

您可以使用(.*?)替换some string? maens非贪婪匹配