我在美国众议院刮印和保存(作为逗号分隔的文本文件)有关唱名表决的信息。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