我有一个.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
答案 0 :(得分:0)
Python中有许多XML解析器,但ElementTree
有an 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')