从CSV d写入多个文本文件

2024-09-29 17:17:41 发布

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

因此,我创建了一个程序,从.csv文件中提取数据,并将其导出为可以在自建wiki上使用的格式。你知道吗

所以每次添加新行时,代码都会循环。你知道吗

我希望当它循环时,它必须将数据写入一个新的.txt文件,并使用从.txt文件中获得的名称。请协助这样做

因此,我尝试将整个代码定义为一个真正的并导出它,但我真的不熟悉Python,我将感谢您的帮助。。。你知道吗

import csv

with open('123.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count += 1
        else:
            print(f'========{row[7]} - {row[1]}========')
            line_count += 1
        #Info
            print(f'===General Info===')
            line_count += 1
            print(f'Coordinates: {row[5]}  {row[10]}')
            line_count += 1
        if row[8] == 'n':
            print(f'Eskom Site')
        else:
            print(f'Solar Site')
            line_count += 1
    print(f'Processed {line_count} lines.')

输入.csv文件

No,Site,Rek Nr,Naam ,Nommer,Coordinates,Sectors,No,Solar Site,Camera,,Monitor Address
1,Nedbank,,,,1,35,128,n,,\\,n
2,Silicon,,,,2,16,129,n,,\\,n
3,Twilight,,,,3,17,130,n,,\\,n
4,Percy,,,,4,20,131,n,,\\,n
5,Rey,,,,5,13,132,n,,\\,n

输出:

========128 - Nedbank========
===General Info===
Coordinates: 1  \\
Eskom Site
========129 - Silicon========
===General Info===
Coordinates: 2  \\
Eskom Site
========130 - Twilight========
===General Info===
Coordinates: 3  \\
Eskom Site
========131 - Percy========
===General Info===
Coordinates: 4  \\
Eskom Site
========132 - Rey========
===General Info===
Coordinates: 5  \\
Eskom Site

因此,每当一行从========x-x========x开始时,它必须将它写入一个新的txt文件


Tags: 文件csv数据代码infotxtcountline
1条回答
网友
1楼 · 发布于 2024-09-29 17:17:41

修改代码以将print语句写入.txt文件。注意:这将把所有内容写入一个文件。你知道吗

import csv

with open('123.csv', 'r') as csv_file, open("xyz.txt", "w") as txt_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            txt_file.write('Column names are { %s }\n'%(','.join(row)))
        else:
            txt_file.write('========{} - {}========\n'.format(row[7], row[1]))
        #Info
            txt_file.write('===General Info===\n')
            txt_file.write('Coordinates: {}  {}\n'.format(row[5], row[10]))
        if row[8] == 'n':
            txt_file.write('Eskom Site\n')
        else:
            txt_file.write('Solar Site\n')
        line_count += 1
    txt_file.write('Processed {} lines.\n'.format(str(line_count)))

但是如果您想要.csv文件的每一行,这有点不可理解为什么!,要写入一个单独的文件,只需调整上述程序即可-

import csv

with open('123.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        new_file_name = row[8] + ' - ' + row[4]
        with open(new_file_name, 'a+') as txt_file:
            if line_count == 0:
                txt_file.write('Column names are { %s }\n'%(','.join(row)))
            else:
                txt_file.write('========{} - {}========\n'.format(row[7], row[1]))
                #Info
                txt_file.write('===General Info===\n')
                txt_file.write('Coordinates: {}  {}\n'.format(row[5], row[10]))
            if row[8] == 'n':
                txt_file.write('Eskom Site\n')
            else:
                txt_file.write('Solar Site\n')
            line_count += 1
        #txt_file.write('Processed {} lines.\n'.format(str(line_count)))

在处理完所有的行-Processed {} lines之后,您想写最后一个语句的文件是什么?如果你想把它写入另一个文件,你可以这样做-

last_file_name = str(line_count)
with open(last_file_name, 'w') as txt_file:
    txt_file.write('Processed {} lines.\n'.format(str(line_count)))

相关问题 更多 >

    热门问题