将txt转换为csv python脚本

时间:2016-09-22 14:38:30

标签: python csv text

我有一个内置的.txt文件 - 2.9,Gardena CA

我要做的是使用python脚本将该文本转换为.csv(表格):

import csv
import itertools

with open('log.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line for line in stripped if line)
    grouped = itertools.izip(*[lines] * 3)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro'))
        writer.writerows(grouped)

我在log.csv文件中得到的输出是 - title,intro,tagline

我希望log.csv文件显示的是:

title,intro
2.9,Gardena CA

5 个答案:

答案 0 :(得分:18)

您需要先拆分该行。

import csv

with open('log.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line.split(",") for line in stripped if line)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro'))
        writer.writerows(lines)

答案 1 :(得分:4)

import pandas as pd
df = pd.read_fwf('log.txt')
df.to_csv('log.csv')

答案 2 :(得分:1)

这是我的方法:

 with open(txtfile, 'r') as infile, open(csvfile, 'w') as outfile:
        stripped = (line.strip() for line in infile)
        lines = (line.split(",") for line in stripped if line)
        writer = csv.writer(outfile)
        writer.writerows(lines)

希望有帮助!

答案 3 :(得分:0)

我认为这是你需要的输出:

  

标题,介绍,标语

     

2.9,加迪纳,CA

可以通过对代码进行此更改来完成:

import csv
import itertools

with open('log.txt', 'r') as in_file:
    lines = in_file.read().splitlines()
    stripped = [line.replace(","," ").split() for line in lines]
    grouped = itertools.izip(*[stripped]*1)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro', 'tagline'))
        for group in grouped:
            writer.writerows(group)

答案 4 :(得分:0)

在 python 3.x 版本中,intertools.izip 没有运行。

Python 3 的功能代码是:

import csv
import zlib

with open('output.txt', 'r') as in_file:
    lines = in_file.read().splitlines()
    stripped = [line.replace(","," ").split() for line in lines]
    grouped = zip(*[stripped]*1)
    with open('teste.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('A', 'B', 'C', 'D'))
        for group in grouped:
            writer.writerows(group)