从CSV中提取2行并转换为XML。

huangapple go评论92阅读模式
英文:

pick up 2 rows from csv and convert to xml

问题

以下是代码的翻译部分:

  1. import csv
  2. import xml.etree.ElementTree as ET
  3. # 定义行的名称
  4. row_names = [
  5. 'Time',
  6. 'Client',
  7. 'User',
  8. 'number',
  9. 'processid',
  10. 'program',
  11. 'randomnumber',
  12. 'processidandwp',
  13. 'userclient',
  14. 'transactionid',
  15. 'additional1',
  16. 'additional2',
  17. 'additional3',
  18. 'additional4'
  19. ]
  20. # 创建XML根元素
  21. root = ET.Element("Processes")
  22. counter = 0
  23. # 打开CSV文件
  24. with open("data.csv", 'r') as file:
  25. csv_reader = csv.reader(file, delimiter="|")
  26. sub_root = ET.SubElement(root, 'name')
  27. for row in csv_reader:
  28. for name in row:
  29. if counter < len(row_names) and name:
  30. ele = ET.SubElement(sub_root, row_names
    0
    +
    网站访问量
    )
  31. ele.text = name
  32. counter += 1
  33. # 打印生成的XML
  34. ET.dump(root)

这段代码是用于读取CSV文件并生成XML的,可以帮助你将数据转换为期望的XML格式。你需要确保CSV文件中的数据与期望的XML结构相匹配,以便生成正确的输出。

英文:

My text file has 100's of entries like below.. I want my code to catch each event which has 14 or 15 elements seperated by delimiter ( | ) and put them in xml. Each event should be captured in new <name> tag.

6354|,EGZ|2023012711283700|900|DDIC|S000|R_JR_BTCJOBS_GENERATOR||1|25737,00088,B5|SAP_WORKFLOW_WIM_ACTION/11283700&JOB_CLOSE&&&&|43AE5E5C16990580E0063BBEAE21BEA8|42010A2A25FA1EDDA7CN
BDA81EE66224C|0000000000000000000000000000000000000\000000000000000000
6355|,EGZ|2023012711283700|900|DDIC|S000|R_JR_BTCJOBS_GENERATOR||1|25737,00088,B5|SAP_WORKFLOW_WIM_ACTION/11283700&JOB_CLOSE&&&&|43AE5E5C16990580E0063BBEAE21BEA8|42010A2A25FA1EDDA7CN
BDA81EE66224C|0000000000000000000000000000000000000\000000000000000000s

  1. Expected output is this:
  2. &lt;/Processes&gt;
  3. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  4. &lt;name&gt;
  5. &lt;Time&gt;6354&lt;/Time&gt;
  6. &lt;Client&gt;,EGZ&lt;/Client&gt;
  7. &lt;User&gt;2023012711283700&lt;/User&gt;
  8. &lt;number&gt;900&lt;/number&gt;
  9. &lt;processid&gt;DDIC&lt;/processid&gt;
  10. &lt;program&gt;S000&lt;/program&gt;
  11. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  12. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  13. &lt;userclient&gt;1&lt;/userclient&gt;
  14. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  15. &lt;additional1&gt;text&lt;/additional1&gt;
  16. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  17. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  18. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  19. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  20. &lt;/name&gt;
  21. &lt;name&gt;
  22. &lt;Time&gt;6355&lt;/Time&gt;
  23. &lt;Client&gt;,EGZ&lt;/Client&gt;
  24. &lt;User&gt;2023012711283700&lt;/User&gt;
  25. &lt;number&gt;900&lt;/number&gt;
  26. &lt;processid&gt;DDIC&lt;/processid&gt;
  27. &lt;program&gt;S000&lt;/program&gt;
  28. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  29. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  30. &lt;userclient&gt;1&lt;/userclient&gt;
  31. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  32. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  33. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  34. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  35. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  36. &lt;/name&gt;
  37. &lt;/Processes&gt;
  38. The current output that I get is this
  39. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  40. &lt;Processes&gt;
  41. &lt;name&gt;
  42. &lt;Time&gt;6354&lt;/Time&gt;
  43. &lt;Client&gt;,EGZ&lt;/Client&gt;
  44. &lt;User&gt;2023012711283700&lt;/User&gt;
  45. &lt;number&gt;900&lt;/number&gt;
  46. &lt;processid&gt;DDIC&lt;/processid&gt;
  47. &lt;program&gt;S000&lt;/program&gt;
  48. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  49. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  50. &lt;userclient&gt;1&lt;/userclient&gt;
  51. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  52. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/&lt;/additional1&gt;
  53. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  54. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  55. &lt;/name&gt;
  56. &lt;name&gt;
  57. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  58. &lt;Client&gt;0000000000000000000000000000000000000
    Expected output is this:
  59. &lt;/Processes&gt;
  60. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  61. &lt;name&gt;
  62. &lt;Time&gt;6354&lt;/Time&gt;
  63. &lt;Client&gt;,EGZ&lt;/Client&gt;
  64. &lt;User&gt;2023012711283700&lt;/User&gt;
  65. &lt;number&gt;900&lt;/number&gt;
  66. &lt;processid&gt;DDIC&lt;/processid&gt;
  67. &lt;program&gt;S000&lt;/program&gt;
  68. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  69. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  70. &lt;userclient&gt;1&lt;/userclient&gt;
  71. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  72. &lt;additional1&gt;text&lt;/additional1&gt;
  73. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  74. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  75. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  76. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  77. &lt;/name&gt;
  78. &lt;name&gt;
  79. &lt;Time&gt;6355&lt;/Time&gt;
  80. &lt;Client&gt;,EGZ&lt;/Client&gt;
  81. &lt;User&gt;2023012711283700&lt;/User&gt;
  82. &lt;number&gt;900&lt;/number&gt;
  83. &lt;processid&gt;DDIC&lt;/processid&gt;
  84. &lt;program&gt;S000&lt;/program&gt;
  85. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  86. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  87. &lt;userclient&gt;1&lt;/userclient&gt;
  88. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  89. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  90. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  91. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  92. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  93. &lt;/name&gt;
  94. &lt;/Processes&gt;
  95. The current output that I get is this
  96. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  97. &lt;Processes&gt;
  98. &lt;name&gt;
  99. &lt;Time&gt;6354&lt;/Time&gt;
  100. &lt;Client&gt;,EGZ&lt;/Client&gt;
  101. &lt;User&gt;2023012711283700&lt;/User&gt;
  102. &lt;number&gt;900&lt;/number&gt;
  103. &lt;processid&gt;DDIC&lt;/processid&gt;
  104. &lt;program&gt;S000&lt;/program&gt;
  105. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  106. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  107. &lt;userclient&gt;1&lt;/userclient&gt;
  108. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  109. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/&lt;/additional1&gt;
  110. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  111. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  112. &lt;/name&gt;
  113. &lt;name&gt;
  114. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  115. &lt;Client&gt;0000000000000000000000000000000000000\000000000000000000&lt;/Client&gt;
  116. &lt;/name&gt;
  117. &lt;name&gt;
  118. &lt;Time&gt;6355&lt;/Time&gt;
  119. &lt;Client&gt;,EGZ&lt;/Client&gt;
  120. &lt;User&gt;2023012711283700&lt;/User&gt;
  121. &lt;number&gt;900&lt;/number&gt;
  122. &lt;processid&gt;DDIC&lt;/processid&gt;
  123. &lt;program&gt;S000&lt;/program&gt;
  124. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  125. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  126. &lt;userclient&gt;1&lt;/userclient&gt;
  127. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  128. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11&lt;/additional1&gt;
  129. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  130. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  131. &lt;/name&gt;
  132. &lt;name&gt;
  133. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  134. &lt;Client&gt;0000000000000000000000000000000000000\000000000000000000s&lt;/Client&gt;
  135. &lt;/name&gt;
  136. &lt;/Processes&gt;
  137. My code which i got is this:
  138. import csv
  139. import xml.etree.ElementTree as ET
  140. row_names = [
  141. &#39;Time&#39;,
  142. &#39;Client&#39;,
  143. &#39;User&#39;,
  144. &#39;number&#39;,
  145. &#39;processid&#39;,
  146. &#39;program&#39;,
  147. &#39;randomnumber&#39;,
  148. &#39;processidandwp&#39;,
  149. &#39;userclient&#39;,
  150. &#39;transactionid&#39;,
  151. &#39;additional1&#39;,
  152. &#39;additional2&#39;,
  153. &#39;additional3&#39;,
  154. &#39;additional4&#39;
  155. ]
  156. root = ET.Element(&quot;Processes&quot;)
  157. counter = 0
  158. with open(&quot;data.csv&quot;, &#39;r&#39;) as file:
  159. csv_reader = csv.reader(file, delimiter=&quot;|&quot;)
  160. sub_root = ET.SubElement(root, &#39;name&#39;)
  161. for row in csv_reader:
  162. for name in row:
  163. if counter &lt; len(row_names) and name:
  164. ele = ET.SubElement(sub_root, row_names
    0
    +
    网站访问量
    )
  165. ele.text = name
  166. counter += 1
  167. ET.dump(root)
  168. 0000000000000000&lt;/Client&gt;
  169. &lt;/name&gt;
  170. &lt;name&gt;
  171. &lt;Time&gt;6355&lt;/Time&gt;
  172. &lt;Client&gt;,EGZ&lt;/Client&gt;
  173. &lt;User&gt;2023012711283700&lt;/User&gt;
  174. &lt;number&gt;900&lt;/number&gt;
  175. &lt;processid&gt;DDIC&lt;/processid&gt;
  176. &lt;program&gt;S000&lt;/program&gt;
  177. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  178. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  179. &lt;userclient&gt;1&lt;/userclient&gt;
  180. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  181. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11&lt;/additional1&gt;
  182. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  183. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  184. &lt;/name&gt;
  185. &lt;name&gt;
  186. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  187. &lt;Client&gt;0000000000000000000000000000000000000
    Expected output is this:
  188. &lt;/Processes&gt;
  189. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  190. &lt;name&gt;
  191. &lt;Time&gt;6354&lt;/Time&gt;
  192. &lt;Client&gt;,EGZ&lt;/Client&gt;
  193. &lt;User&gt;2023012711283700&lt;/User&gt;
  194. &lt;number&gt;900&lt;/number&gt;
  195. &lt;processid&gt;DDIC&lt;/processid&gt;
  196. &lt;program&gt;S000&lt;/program&gt;
  197. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  198. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  199. &lt;userclient&gt;1&lt;/userclient&gt;
  200. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  201. &lt;additional1&gt;text&lt;/additional1&gt;
  202. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  203. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  204. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  205. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  206. &lt;/name&gt;
  207. &lt;name&gt;
  208. &lt;Time&gt;6355&lt;/Time&gt;
  209. &lt;Client&gt;,EGZ&lt;/Client&gt;
  210. &lt;User&gt;2023012711283700&lt;/User&gt;
  211. &lt;number&gt;900&lt;/number&gt;
  212. &lt;processid&gt;DDIC&lt;/processid&gt;
  213. &lt;program&gt;S000&lt;/program&gt;
  214. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  215. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  216. &lt;userclient&gt;1&lt;/userclient&gt;
  217. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  218. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  219. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  220. &lt;additional4&gt;BDA81EE66224C&lt;/additional4&gt;
  221. &lt;additional5&gt;000000000000000000/00000000000&lt;/additional5&gt;
  222. &lt;/name&gt;
  223. &lt;/Processes&gt;
  224. The current output that I get is this
  225. &lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&gt;
  226. &lt;Processes&gt;
  227. &lt;name&gt;
  228. &lt;Time&gt;6354&lt;/Time&gt;
  229. &lt;Client&gt;,EGZ&lt;/Client&gt;
  230. &lt;User&gt;2023012711283700&lt;/User&gt;
  231. &lt;number&gt;900&lt;/number&gt;
  232. &lt;processid&gt;DDIC&lt;/processid&gt;
  233. &lt;program&gt;S000&lt;/program&gt;
  234. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  235. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  236. &lt;userclient&gt;1&lt;/userclient&gt;
  237. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  238. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/&lt;/additional1&gt;
  239. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  240. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  241. &lt;/name&gt;
  242. &lt;name&gt;
  243. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  244. &lt;Client&gt;0000000000000000000000000000000000000\000000000000000000&lt;/Client&gt;
  245. &lt;/name&gt;
  246. &lt;name&gt;
  247. &lt;Time&gt;6355&lt;/Time&gt;
  248. &lt;Client&gt;,EGZ&lt;/Client&gt;
  249. &lt;User&gt;2023012711283700&lt;/User&gt;
  250. &lt;number&gt;900&lt;/number&gt;
  251. &lt;processid&gt;DDIC&lt;/processid&gt;
  252. &lt;program&gt;S000&lt;/program&gt;
  253. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  254. &lt;processidandwp&gt;&lt;/processidandwp&gt;
  255. &lt;userclient&gt;1&lt;/userclient&gt;
  256. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  257. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11&lt;/additional1&gt;
  258. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  259. &lt;additional3&gt;42010A2A25FA1EDDA7CN&lt;/additional3&gt;
  260. &lt;/name&gt;
  261. &lt;name&gt;
  262. &lt;Time&gt;BDA81EE66224C&lt;/Time&gt;
  263. &lt;Client&gt;0000000000000000000000000000000000000\000000000000000000s&lt;/Client&gt;
  264. &lt;/name&gt;
  265. &lt;/Processes&gt;
  266. My code which i got is this:
  267. import csv
  268. import xml.etree.ElementTree as ET
  269. row_names = [
  270. &#39;Time&#39;,
  271. &#39;Client&#39;,
  272. &#39;User&#39;,
  273. &#39;number&#39;,
  274. &#39;processid&#39;,
  275. &#39;program&#39;,
  276. &#39;randomnumber&#39;,
  277. &#39;processidandwp&#39;,
  278. &#39;userclient&#39;,
  279. &#39;transactionid&#39;,
  280. &#39;additional1&#39;,
  281. &#39;additional2&#39;,
  282. &#39;additional3&#39;,
  283. &#39;additional4&#39;
  284. ]
  285. root = ET.Element(&quot;Processes&quot;)
  286. counter = 0
  287. with open(&quot;data.csv&quot;, &#39;r&#39;) as file:
  288. csv_reader = csv.reader(file, delimiter=&quot;|&quot;)
  289. sub_root = ET.SubElement(root, &#39;name&#39;)
  290. for row in csv_reader:
  291. for name in row:
  292. if counter &lt; len(row_names) and name:
  293. ele = ET.SubElement(sub_root, row_names
    0
    +
    网站访问量
    )
  294. ele.text = name
  295. counter += 1
  296. ET.dump(root)
  297. 0000000000000000s&lt;/Client&gt;
  298. &lt;/name&gt;
  299. &lt;/Processes&gt;
  300. My code which i got is this:
  301. import csv
  302. import xml.etree.ElementTree as ET
  303. row_names = [
  304. &#39;Time&#39;,
  305. &#39;Client&#39;,
  306. &#39;User&#39;,
  307. &#39;number&#39;,
  308. &#39;processid&#39;,
  309. &#39;program&#39;,
  310. &#39;randomnumber&#39;,
  311. &#39;processidandwp&#39;,
  312. &#39;userclient&#39;,
  313. &#39;transactionid&#39;,
  314. &#39;additional1&#39;,
  315. &#39;additional2&#39;,
  316. &#39;additional3&#39;,
  317. &#39;additional4&#39;
  318. ]
  319. root = ET.Element(&quot;Processes&quot;)
  320. counter = 0
  321. with open(&quot;data.csv&quot;, &#39;r&#39;) as file:
  322. csv_reader = csv.reader(file, delimiter=&quot;|&quot;)
  323. sub_root = ET.SubElement(root, &#39;name&#39;)
  324. for row in csv_reader:
  325. for name in row:
  326. if counter &lt; len(row_names) and name:
  327. ele = ET.SubElement(sub_root, row_names
    0
    +
    网站访问量
    )
  328. ele.text = name
  329. counter += 1
  330. ET.dump(root)

If you see my current output vs expected output, I want to have the expected output. For now...when the code reads the rows from the file, as soon as it reaches the 2nd row ( for the 1st event) or 4th row ( for the 2nd event) , it creates a new <name> tag. Does it make sense?

答案1

得分: 1

假设在 data.csv 文件中有偶数行。以下重构后的 Python 代码可能适用于您。将每两行组合成一个以管道分隔的记录,然后将其拆分为数组。对于数组中的每个项目,使用row_names 数组中相应的节点名称构建 XML 节点。

  1. import xml.etree.ElementTree as ET
  2. import itertools
  3. node_names = ['Time', 'Client', 'User', 'number', 'processid',
  4. 'program', 'randomnumber', 'processidandwp', 'userclient', 'transactionid',
  5. 'additional1', 'additional2', 'additional3', 'additional4', 'additional5']
  6. root = ET.Element('Processes')
  7. with open('data.csv') as f:
  8. for l1, l2 in itertools.zip_longest(*[f]*2):
  9. sub_root = ET.SubElement(root, 'name')
  10. for idx, item in "".join([l1.strip(), l2.strip()]).split("|"):
  11. ele = ET.SubElement(sub_root, node_names[idx])
  12. ele.text = item
  13. ET.indent(root, space=" ", level=0)
  14. ET.dump(root)

输出:

  1. <Processes>
  2. <name>
  3. <Time>6354</Time>
  4. <Client>,EGZ</Client>
  5. <User>2023012711283700</User>
  6. <number>900</number>
  7. <processid>DDIC</processid>
  8. <program>S000</program>
  9. <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  10. <processidandwp />
  11. <userclient>1</userclient>
  12. <transactionid>25737,00088,B5</transactionid>
  13. <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  14. <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  15. <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  16. <additional4>0000000000000000000000000000000000000
    <Processes>
  17.   <name>
  18.     <Time>6354</Time>
  19.     <Client>,EGZ</Client>
  20.     <User>2023012711283700</User>
  21.     <number>900</number>
  22.     <processid>DDIC</processid>
  23.     <program>S000</program>
  24.     <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  25.     <processidandwp />
  26.     <userclient>1</userclient>
  27.     <transactionid>25737,00088,B5</transactionid>
  28.     <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  29.     <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  30.     <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  31.     <additional4>0000000000000000000000000000000000000\000000000000000000</additional4>
  32.   </name>
  33.   <name>
  34.     <Time>6355</Time>
  35.     <Client>,EGZ</Client>
  36.     <User>2023012711283700</User>
  37.     <number>900</number>
  38.     <processid>DDIC</processid>
  39.     <program>S000</program>
  40.     <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  41.     <processidandwp />
  42.     <userclient>1</userclient>
  43.     <transactionid>25737,00088,B5</transactionid>
  44.     <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  45.     <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  46.     <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  47.     <additional4>0000000000000000000000000000000000000\000000000000000000s</additional4>
  48.   </name>
  49. </Processes>
  50. 0000000000000000</additional4>
  51. </name>
  52. <name>
  53. <Time>6355</Time>
  54. <Client>,EGZ</Client>
  55. <User>2023012711283700</User>
  56. <number>900</number>
  57. <processid>DDIC</processid>
  58. <program>S000</program>
  59. <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  60. <processidandwp />
  61. <userclient>1</userclient>
  62. <transactionid>25737,00088,B5</transactionid>
  63. <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  64. <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  65. <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  66. <additional4>0000000000000000000000000000000000000
    <Processes>
  67.   <name>
  68.     <Time>6354</Time>
  69.     <Client>,EGZ</Client>
  70.     <User>2023012711283700</User>
  71.     <number>900</number>
  72.     <processid>DDIC</processid>
  73.     <program>S000</program>
  74.     <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  75.     <processidandwp />
  76.     <userclient>1</userclient>
  77.     <transactionid>25737,00088,B5</transactionid>
  78.     <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  79.     <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  80.     <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  81.     <additional4>0000000000000000000000000000000000000\000000000000000000</additional4>
  82.   </name>
  83.   <name>
  84.     <Time>6355</Time>
  85.     <Client>,EGZ</Client>
  86.     <User>2023012711283700</User>
  87.     <number>900</number>
  88.     <processid>DDIC</processid>
  89.     <program>S000</program>
  90.     <randomnumber>R_JR_BTCJOBS_GENERATOR</randomnumber>
  91.     <processidandwp />
  92.     <userclient>1</userclient>
  93.     <transactionid>25737,00088,B5</transactionid>
  94.     <additional1>SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1>
  95.     <additional2>43AE5E5C16990580E0063BBEAE21BEA8</additional2>
  96.     <additional3>42010A2A25FA1EDDA7CNBDA81EE66224C</additional3>
  97.     <additional4>0000000000000000000000000000000000000\000000000000000000s</additional4>
  98.   </name>
  99. </Processes>
  100. 0000000000000000s</additional4>
  101. </name>
  102. </Processes>

验证源文件 data.csv 包含 4 行:

  1. wc -l data.csv
  2. 4 data.csv
英文:

Assuming an even number of lines in data.csv. The following refactored python code may work for you. Combine every 2 lines into a single pipe-delimited record that is split into an array. For each item in the array build an XML node using the corresponding node name from the row_names array.

  1. import xml.etree.ElementTree as ET
  2. import itertools
  3. node_names = [&#39;Time&#39;,&#39;Client&#39;,&#39;User&#39;,&#39;number&#39;,&#39;processid&#39;,
  4. &#39;program&#39;,&#39;randomnumber&#39;,&#39;processidandwp&#39;,&#39;userclient&#39;,&#39;transactionid&#39;,
  5. &#39;additional1&#39;,&#39;additional2&#39;,&#39;additional3&#39;,&#39;additional4&#39;,&#39;additional5&#39;]
  6. root = ET.Element(&#39;Processes&#39;)
  7. with open(&#39;data.csv&#39;) as f:
  8. for l1,l2 in itertools.zip_longest(*[f]*2):
  9. sub_root = ET.SubElement(root, &#39;name&#39;)
  10. for idx, item in enumerate(&quot;&quot;.join([l1.strip(), l2.strip()]).split(&quot;|&quot;)):
  11. ele = ET.SubElement(sub_root, node_names[idx])
  12. ele.text = item
  13. ET.indent(root, space=&quot; &quot;, level=0)
  14. ET.dump(root)

Output:

  1. &lt;Processes&gt;
  2. &lt;name&gt;
  3. &lt;Time&gt;6354&lt;/Time&gt;
  4. &lt;Client&gt;,EGZ&lt;/Client&gt;
  5. &lt;User&gt;2023012711283700&lt;/User&gt;
  6. &lt;number&gt;900&lt;/number&gt;
  7. &lt;processid&gt;DDIC&lt;/processid&gt;
  8. &lt;program&gt;S000&lt;/program&gt;
  9. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  10. &lt;processidandwp /&gt;
  11. &lt;userclient&gt;1&lt;/userclient&gt;
  12. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  13. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  14. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  15. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  16. &lt;additional4&gt;0000000000000000000000000000000000000
    &lt;Processes&gt;
  17. &lt;name&gt;
  18. &lt;Time&gt;6354&lt;/Time&gt;
  19. &lt;Client&gt;,EGZ&lt;/Client&gt;
  20. &lt;User&gt;2023012711283700&lt;/User&gt;
  21. &lt;number&gt;900&lt;/number&gt;
  22. &lt;processid&gt;DDIC&lt;/processid&gt;
  23. &lt;program&gt;S000&lt;/program&gt;
  24. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  25. &lt;processidandwp /&gt;
  26. &lt;userclient&gt;1&lt;/userclient&gt;
  27. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  28. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  29. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  30. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  31. &lt;additional4&gt;0000000000000000000000000000000000000\000000000000000000&lt;/additional4&gt;
  32. &lt;/name&gt;
  33. &lt;name&gt;
  34. &lt;Time&gt;6355&lt;/Time&gt;
  35. &lt;Client&gt;,EGZ&lt;/Client&gt;
  36. &lt;User&gt;2023012711283700&lt;/User&gt;
  37. &lt;number&gt;900&lt;/number&gt;
  38. &lt;processid&gt;DDIC&lt;/processid&gt;
  39. &lt;program&gt;S000&lt;/program&gt;
  40. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  41. &lt;processidandwp /&gt;
  42. &lt;userclient&gt;1&lt;/userclient&gt;
  43. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  44. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  45. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  46. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  47. &lt;additional4&gt;0000000000000000000000000000000000000\000000000000000000s&lt;/additional4&gt;
  48. &lt;/name&gt;
  49. &lt;/Processes&gt;
  50. 0000000000000000&lt;/additional4&gt;
  51. &lt;/name&gt;
  52. &lt;name&gt;
  53. &lt;Time&gt;6355&lt;/Time&gt;
  54. &lt;Client&gt;,EGZ&lt;/Client&gt;
  55. &lt;User&gt;2023012711283700&lt;/User&gt;
  56. &lt;number&gt;900&lt;/number&gt;
  57. &lt;processid&gt;DDIC&lt;/processid&gt;
  58. &lt;program&gt;S000&lt;/program&gt;
  59. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  60. &lt;processidandwp /&gt;
  61. &lt;userclient&gt;1&lt;/userclient&gt;
  62. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  63. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  64. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  65. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  66. &lt;additional4&gt;0000000000000000000000000000000000000
    &lt;Processes&gt;
  67. &lt;name&gt;
  68. &lt;Time&gt;6354&lt;/Time&gt;
  69. &lt;Client&gt;,EGZ&lt;/Client&gt;
  70. &lt;User&gt;2023012711283700&lt;/User&gt;
  71. &lt;number&gt;900&lt;/number&gt;
  72. &lt;processid&gt;DDIC&lt;/processid&gt;
  73. &lt;program&gt;S000&lt;/program&gt;
  74. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  75. &lt;processidandwp /&gt;
  76. &lt;userclient&gt;1&lt;/userclient&gt;
  77. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  78. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  79. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  80. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  81. &lt;additional4&gt;0000000000000000000000000000000000000\000000000000000000&lt;/additional4&gt;
  82. &lt;/name&gt;
  83. &lt;name&gt;
  84. &lt;Time&gt;6355&lt;/Time&gt;
  85. &lt;Client&gt;,EGZ&lt;/Client&gt;
  86. &lt;User&gt;2023012711283700&lt;/User&gt;
  87. &lt;number&gt;900&lt;/number&gt;
  88. &lt;processid&gt;DDIC&lt;/processid&gt;
  89. &lt;program&gt;S000&lt;/program&gt;
  90. &lt;randomnumber&gt;R_JR_BTCJOBS_GENERATOR&lt;/randomnumber&gt;
  91. &lt;processidandwp /&gt;
  92. &lt;userclient&gt;1&lt;/userclient&gt;
  93. &lt;transactionid&gt;25737,00088,B5&lt;/transactionid&gt;
  94. &lt;additional1&gt;SAP_WORKFLOW_WIM_ACTION/11283700&amp;amp;JOB_CLOSE&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;/additional1&gt;
  95. &lt;additional2&gt;43AE5E5C16990580E0063BBEAE21BEA8&lt;/additional2&gt;
  96. &lt;additional3&gt;42010A2A25FA1EDDA7CNBDA81EE66224C&lt;/additional3&gt;
  97. &lt;additional4&gt;0000000000000000000000000000000000000\000000000000000000s&lt;/additional4&gt;
  98. &lt;/name&gt;
  99. &lt;/Processes&gt;
  100. 0000000000000000s&lt;/additional4&gt;
  101. &lt;/name&gt;
  102. &lt;/Processes&gt;

Verification that source data.csv has 4 lines:

  1. wc -l data.csv
  2. 4 data.csv

huangapple
  • 本文由 发表于 2023年2月8日 22:21:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/75387137.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定