如何在Python3中将多个文本文件转换为csv格式?

时间:2016-07-14 19:56:23

标签: python-3.x csv

我有超过2000个.txt文件,我需要转换为.csv文件。每个都按顺序标记(即nstar0001.txt,nstar0002.txt等...)。我已经在多个地方搜索了答案,但通常解决方案是针对Python2.x或使用过时的库。每个星形文件都有7列数据,我想在转换为csv格式时标记这些数据。

这是我最近的尝试:

import csv
import os
import itertools


##Convert all nstar####.txt files to csv
stars = int(input("Enter the TOTAL number of stars (including 'bad' stars):"))
k = 1
while k < stars + 1:
    if k < 10:
        q = 'nstar' + '0' + '0' + '0' + str(k) + '.txt'
        r = 'nstar' + '0' + '0' + '0' + str(k) + '.csv'
        with open(q, 'rb') as in_file:
            stripped = (line.strip() for line in in_file)
            lines = (line for line in stripped if line)
            grouped = itertools.izip(*[lines] * 7)
            with open(r, 'wb') as out_file:
                writer = csv.write(out_file)
                writer.writerow(('jd', 'mag', 'merr', 'id', 'cerr', 'serr', 'perr'))
                writer.writerows(grouped)

这是从另一个StackOverflow问题借来的,并稍作修改以满足我的需求。但是,在跑步时我得到了

AttributeError: module 'itertools' has no attribute 'izip'

我知道这个循环仅适用于前几个文件,但只是想在为所有文件运行之前使其工作。

1 个答案:

答案 0 :(得分:0)

你可以使用熊猫。这样的事情应该有效:

import pandas as pd

for i in range(5):
    fln = "nstar%04d" % i
    df = pd.read_csv(fln+".txt",delim_whitespace=True, header=None)
    hdr = ['jd', 'mag', 'merr', 'id', 'cerr', 'serr', 'perr']
    df.to_csv(fln+".csv", header=hdr, index=False)