【问题标题】:Good way to split the same value text from few files从几个文件中拆分相同值文本的好方法
【发布时间】:2020-09-30 10:28:02
【问题描述】:

我有 3 个文件,并从中拆分了几个值。

file1: data1, data11, TEST (3 dimension with 2000 value each)
file2: data2, TEST, data22 (3 dimension with 1500 value each)
file3: TEST, data3, data33, data3333, data33333 (5 dimension with 3000 value each)

在第一种情况下,我将 file1[2] 与 file2[1] 进行比较,如果创建相同的文本值,我将合并这两行(来自 2 个文件)。 下一步是与file3[0]比较合并结果,同样的场景,如果找到相同的文本值,我将结果与最后一个文件合并。

我在循环的帮助下这样做,但这需要很长时间:

for i in range(len(limit_value_text)):
   for g in range(len(driver_id)):
      if variables_driver_id[k] == driver_id[g]:
        data[4].append(driver_name[g].text)
        data[5].append(driver_module[g].text)
for g in range(len(limit_value_text)):
   for j in range(len(key_words[0])):
      if limit_value_text[g].text == key_words[0][j]:
         data[6].append(key_words[1][j])

一个文件是 CSV 文件,两个 oder 是 XML 文件。 在 XML 文件中,我使用 XPath 仅查找我想要的标签。

最好的方法是什么?

【问题讨论】:

    标签: python python-3.x list dictionary merge


    【解决方案1】:

    如果你使用更多的循环,你的执行时间会更长。

    为此,pandas 将是更好的选择。 请为您的files (file1, file2, file3) 创建dataframes。 如果您有 csv 文件,请使用以下内容:

    import pandas as pd
    df = pd.read_csv('filename.csv', sep=',', header = 0)
    

    参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

    然后在dataframes (files)之间进行比较并执行合并(pandas has merge and concat features)。这将改善您的执行时间。请试一试。

    【讨论】:

    • 一个是 CSV 文件,两个是 XML 文件。
    • 在 XML 文件中,我使用 XPath 仅查找我想要的标签。