使用python在XML文件中查找日期字符串并将其转换为整数?

时间:2014-03-13 09:09:18

标签: xml date python-2.7

我有一个.XML文件。我想在字符串中找到所有日期值,然后在将日期转换为整数后用新值替换每个值。那么如何在Python中定义一个函数呢?请帮我。谢谢。 例如,我在中间有日期     日期 我希望转换并将日期字符串替换为整数,如下所示:     12345678 而所有其他数据都没有变化。这是我的XML结构:

<?xml version="1.0" encoding="iso-8859-15"?>
<output>
    <response>
        <error>0</error>
    <response>
<entries>
<entry>
    <line>0</line>
    <id></id>
    <first>2014-03-08</first>
    <last>0</last>
    <md5>12e00ed477ad6</md5>
    <virustotal></virustotal>
    <vt_score></vt_score>
    <scanner></scanner>
    <virusname></virusname>
    <url>eva247.com/image/</url>
    <recent></recent>
    <response></response>
    <ip></ip>
    <as></as>
    <review></review>
    <domain>eva247.com</domain>
    <country></country>
    <source></source>
    <email></email>
    <inetnum></inetnum>
    <netname>Tam Nhin Moi</netname>
    <descr></descr>
    <ns1></ns1>
    <ns2></ns2>
    <ns3></ns3>
    <ns4></ns4>
    <ns5></ns5>
</entry>
<entry>
    <line>1</line>
    <id></id>
    <first>2014-02-06</first>
    <last>0</last>
    <md5>de7db4cbe86d34373eb70</md5>
    <virustotal></virustotal>
    <vt_score></vt_score>
    <scanner></scanner>
    <virusname>N/A</virusname>
    <url>files.downloadsmart.net</url>
    <recent></recent>
    <response></response>
    <ip></ip>
    <as>7643</as>
    <review></review>
    <domain>files.do</domain>
    <country></country>
    <source></source>
    <email></email>
    <inetnum></inetnum>
    <netname>(VNPT)</netname>
    <descr></descr>
    <ns1></ns1>
    <ns2></ns2>
    <ns3></ns3>
    <ns4></ns4>
    <ns5></ns5>
</entry>

这是我的代码:

fp = open("2014-03-12_16.19.xml","r") 
tmp = fp.read() 
for line in tmp: 
    fileopen = open("danh_sach_xml_new.xml","a") 
    match = re.search(r"(\d{4}-\d{2}-\d{2})", line) 
    if match: 
        result = match.group(1) 
        newline = result.replace(result,_timestamp_(result)) 
        fileopen.write(newline) 
    else: 
        fileopen.write(line) 
    fileopen.close() 
fp.close()

def _timestamp_(date): 
    list_date = date.split("-") 
    pprint.pprint(list_date) 
    t = (int(list_date[0]), int(list_date[1]), int(list_date[2]),0,0,0) 
    time_stamp = time.mktime(t) 
    return time_stamp

1 个答案:

答案 0 :(得分:0)

Python中有许多XML解析器,但ElementTreean example in the documentation,它们向您展示了如何修改XML文件。

以下是您将如何使用它:

>>> import time
>>> import datetime
>>> import xml.etree.ElementTree as et
>>> tree = et.parse('test.xml')
>>> root = tree.getroot()
>>> for entry in root.find('entries').findall('entry'):
...     entry.find('first').text = str(time.mktime(
...                                datetime.datetime.strptime(entry.find('first').text,
...                                                           "%Y-%m-%d").timetuple()))
...
>>> tree.write('new.xml')