以CSV格式输出内容

2024-09-28 01:30:21 发布

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

我的脚本将处理几个不同路径的文件,我想用python编写CSV格式的输出。你知道吗

例如:

%> script_name <file_name>

在每个文件中,我都有不同的选项要检查。你知道吗

例如:file1:

Best_friend : Riky
Mutual_friend : Anuj
Family_friend : Jamie

例如:file2:

Best_friend : Anjelina
Mutual_friend : Mythe

例如:文件3:

Best_friend : Mahira
Mutual_friend : Shyna
Dear_frind : Kisty

我想以以下格式创建CSV

File,Best_friend, Mutual_friend
File1,Riky,Anuj
File2,Anjelina,Mythe
File3,Mahira,shyna

请帮忙


Tags: 文件csvname路径friend脚本格式script
2条回答

嗯,你的问题有几点。 您需要传递几个文件,读取每个文件中的一些值,然后将这些值输出到csv文件中。 如果你把你的问题分解成几个连续的步骤,这会很有帮助。你知道吗

首先,你需要知道如何阅读给定文件中最好的和共同的朋友。您可以在函数中执行此操作:

def get_best_mutual(filename):
    # some code
    return (best_friend, mutual_friend)

然后,您可以迭代所有文件,在收集值时写入值:

for filename in list_of_filenames:
    best_friend, mutual_friend = get_best_mutual(filename)
    # write filename, best_friend, mutual_friend in output file

写进文件应该很容易,我不谈细节。 问题可能是实际从输入文件中获取值。你知道吗

读取文本文件时,通常是逐行读取。然后你可以看看你的台词来决定做什么:如果它定义了最好的朋友或者共同的朋友,保存这个定义,否则什么也不做。你知道吗

具体来说,它可能看起来像:

def get_best_mutual(filename):
    for line in open(filename): # read each line of the file
        key, value = line.split(':', 1) # split the line along the first :
        if key.startswith('Best'):
            best_friend = value
        if key.startswith('Mutual'):
            mutual_friend = value
    return (best_friend, mutual_friend)

显然,您必须对代码进行更多的保护,以防行中没有“:”,并且您可能还注意到该值以空格开头,以“\n”结尾:您可以使用价值.strip()来解决这个问题。与key相同,如果一行以空格开头,上面的代码将无法识别它。你知道吗

例如,您还需要决定如果一个文件没有最好的朋友该怎么办。你知道吗

使用csv dictReader/dictWriter是处理csv文件更有效的方法。你知道吗

希望这能解决你的问题:

import sys
import csv
import copy

def create_csv(files):
    headers=  ['File', 'Best Friend', 'Mutual Friend']
    list1 = []
    for file in files:
        with open(file,'r') as file_obj:
            dict_temp = {}
            dict_temp['File'] = file
            for line in file_obj:
                if line.split(':')[0] == 'Best_friend ':
                    dict_temp['Best Friend'] = line.split(':')[1].strip()
                if line.split(':')[0] == 'Mutual_friend ':
                    dict_temp['Mutual Friend'] = line.split(':')[1].strip()
        list1.append(dict_temp)
    print list1

    csv_result = open('result.csv','wb')
    writer = csv.DictWriter(csv_result, delimiter=',', fieldnames=headers, quoting=csv.QUOTE_NONE)
    writer.writeheader()
    for entry in list1:
        writer.writerow(entry)
    csv_result.close()

if __name__ == "__main__":
    create_csv(sys.argv[1:])

您可以添加/删除csv中的列,只需使用适当的键将其添加到dictionary中即可。你知道吗

相关问题 更多 >

    热门问题