使用Python将txt文件导入CSV(所有数据在1列中)

时间:2019-02-26 18:47:00

标签: python csv text-files

我有一个小问题,可以帮助一下。 在运行的程序中,我需要在Excel 2010中导入.txt文件,并用';'分隔。在1列中。到目前为止,每次我打开生成的CSV文件时,无论我尝试使用哪种语法,Excel都会在单独的列中对数据进行排序。

有人遇到过这个问题并找到了解决方案吗?

非常感谢您的帮助!

谢谢。

2 个答案:

答案 0 :(得分:0)

这是到目前为止的代码:

import os
import csv

os.chdir(r'C:\Users\Contractuel\Desktop\Test')

with open('Setback.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line.split(";") for line in stripped if line)
    with open('TESTS.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerows(lines)

但是,我最终得到了这个消息:

Result I get from my code :

,我需要这样的东西:

What I would like to get

答案 1 :(得分:0)

我想你想要这样的东西。

import glob
import csv
import xlwt

for filename in glob.glob("C:\\your_path\\*.txt"):
    spamReader = csv.reader((open(filename, 'rb')), delimiter='|',quotechar='"')
    encoding = 'latin1'
    wb = xlwt.Workbook(encoding=encoding)
    sheet=xlwt.Workbook()
    sheet = wb.add_sheet('sheet 1')
    newName = filename
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            sheet.write(rowx, colx, value)
    wb.save(newName.replace('.txt','.xls'))

或者,这个。

import glob
import csv
from xlsxwriter import Workbook

for filename in glob.glob("C:\\your_path\\*.txt"):
    spamReader = csv.reader((open(filename, 'rb')),
                            delimiter='|', quotechar='"')

    newName = filename.replace('.txt', '.xlsx')

    workbook = Workbook(newName, {'strings_to_numbers': True})
    worksheet = workbook.add_worksheet()

    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            worksheet.write(rowx, colx, value)

    workbook.close()

print "Done"