我在美國衆議院刮印和保存(作爲逗號分隔的文本文件)有關唱名錶決的信息。Python正則表達式匹配日期
生成的文件中的每一行都採用以下形式:
點名號碼,比爾,日期,代表投票,總贊成票,總該院
在那裏我遇到了麻煩刮日期從2001年11月1日(點名414)開始。不匹配2001年11月1日,正則表達式匹配不正確或中斷。在第一種情況下,它匹配字符串'-AND-'。文本在#414和#415之間變化,以包含字符串'YEAS-AND-NAYS'。
我打賭我寫了錯誤的正則表達式,但我沒有看到它。我需要改變什麼來匹配日期呢?相關代碼如下。
import urllib2, datetime, sys, re, string
import xml.etree.ElementTree as ET
for i in range(414,514):
if i < 10:
num_string = "00"+str(i)
elif i < 100:
num_string = "0"+str(i)
elif i > 100:
num_string = str(i)
print num_string, datetime.datetime.now()
url = "http://clerk.house.gov/evs/2001/roll"+num_string+".xml"
text = urllib2.urlopen(url).read()
tree = ET.fromstring(text)
notags = ET.tostring(tree, encoding="utf8", method="text")
dte = re.search(r'[0-9]*-[A-Za-z]*-[0-9]*', notags).group()
print dte
使用'datetime'模塊解析日期更容易。您可以指定一個比正則表達式更清晰的自定義格式 – slezica
只是一個快速點:因爲數字是必需的,所以您可能至少需要'r'[0-9] + - [A-Za-z] * - [0 -9] +''所以這些模式元素不能匹配空字符串。由於年份始終(?)包含四位數字,您甚至可以使用'r'[0-9] * - [A-Za-z] * - [0-9] {4}''。 – holdenweb
您正在使用與日期匹配的正則表達式解析整個XML文檔 - BAD IDEA(tm)。首先提取相關的元素,然後用正則表達式解析。提示:找到''元素並解析其中的文本。 –
isedev