使用以下方法解决问题(对于其余问题,将更改我的代码)。很抱歉我的帖子中的代码格式不正确。
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)
感谢您的时间
答案 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非贪婪匹配