如何合并csv文件中的数据

2024-10-02 12:37:59 发布

您现在位置:Python中文网/ 问答频道 /正文

def option2():

    f1 = open("C:\\Users\\notis\\Desktop\\data\\input_data2.txt",'r')
    f1c = f1.read()

    f2 = open("C:\\Users\\notis\\Desktop\\data\\input_names.txt",'r')
    f2c = f2.read()

    f3 = open("C:\\Users\\notis\\Desktop\\data\\output_merged_data.txt",'w') # open in `w` mode to write
    f3.write(f1_contents +'\n'+  f2_contents) # concatenate the contents

    h = open("C:\\Users\\notis\\Desktop\\data\\output_merged_data.txt",'r+')
    hc=h.read()

    for lines in f1:
        for lines in f2:
            split_1 = f1c.split()
            split_2 = f2c.split()
            split_3 = hc.split()
            name1 = split_1[0]
            name2 = split_2[0]
            #if split_3 == '':
                #name3 = ''
            #else name3==split_3[0]:
                #name3 = split_3[0]

        if (name1 != name3 , name2 != name3):
            if name1 == name2:

                index = inputNames.index(',')
                newstr = input2[:-1] + inputNames[index:]
                h.write(newstr)
            else:

                if name1 < name2:
                    h.writelines(input2)
                else:
                    h.writelines(inputNames)

                input2 = f.readline()
                inputNames = g.readline()

读取文件“input\u data2.txt”和“input_名称.txt从文件夹“数据”并创建一个合并此数据的文件-“输出\u合并”_数据.txt”. 根据名称(每个输入文件的第一列),所创建文件中的每一行都是唯一的。因此,如果名称出现在两个输入文件中,则必须合并其余的数据

“input_data2.txt”               “input_names.txt”
John, 12.3, abcd                Adam, 121 station road, London
Johnny, 53.3, star              John, Brecon house, Pontypridd
Steve, 33.5, qwer               

Output: “output_merged_data.txt”
Adam, 121 station road, London
John, 12.3, abcd, Brecon house, Pontypridd
Johnny, 53.3, star
Steve, 33.5, qwer

这是它应该做的,但它似乎只是合并两个文件在一起,我做错了什么?你知道吗


Tags: 文件txtinputdataifopenusersf2
1条回答
网友
1楼 · 发布于 2024-10-02 12:37:59

您似乎正在添加第三个文件(第一个和第二个文件的串联),这只会使问题变得复杂,而对您毫无帮助。。在我看来,您需要一个字典,其中每个人的名字都是一个键,与之相关的属性形成一个值列表。这样,如果条目已经存在(从读取第一个文件开始),您可以简单地将附加项附加到该列表中。你知道吗

比如:

names = {}
with open('input_data2.txt', 'r') as f:
    for line in f:
        items = line.split(',')
        name = items[0]  #first element of list
        data = items[1:] #rest of the list
        names[name] = data

with open('input_names.txt','r') as f:
    for line in f:
        items = line.split(',')
        name = items[0]  #first element of list
        data = items[1:] #rest of the list
        if name in names: #if name already exists
            names[name].append(data) #append additional data
        else:
            names[name] = data #create new entry

with open('output_merged_data.txt', 'w') as f:
    for name in names.keys(): #for each entry
        f.write(name + ','.join(names[name])+ '\n') #write a line

注意:您提供的代码有许多结构和语法错误。。。比我在短时间内所能看到的还要多。当您对python中的不同数据类型执行不同的操作时,您可能会从阅读python中的不同数据类型的行为中获益。有很多伟大的网站都有一些小的代码挑战,帮助你逐步学习如何做基础,并最终将它们结合起来,得到像这个问题这样更复杂的东西

相关问题 更多 >

    热门问题