如何使用Python将标签分隔的txt文件转换为csv文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (690)

因此,我想将一个简单的标签分隔文本文件转换为CSV文件。如果我使用string.拆分(‘\n’)将txt文件转换为字符串,那么我将得到一个包含每个列表项的列表,在每个列之间作为一个字符串具有‘\t’。我在想,我可以用逗号替换‘\t’,但是它不会把列表中的字符串当作字符串,而允许我使用string.replace。下面是我的代码的开始,它仍然需要一种解析选项卡“\t”的方法。

import csv
import sys

txt_file = r"mytxt.txt"
csv_file = r"mycsv.csv"

in_txt = open(txt_file, "r")
out_csv = csv.writer(open(csv_file, 'wb'))

file_string = in_txt.read()

file_list = file_string.split('\n')

for row in ec_file_list:       
    out_csv.writerow(row)
提问于
用户回答回答于

csv支持选项卡分隔的文件。:

import csv

txt_file = r"mytxt.txt"
csv_file = r"mycsv.csv"

# use 'with' if the program isn't going to immediately terminate
# so you don't leave files open
# the 'b' is necessary on Windows
# it prevents \x1a, Ctrl-z, from ending the stream prematurely
# and also stops Python converting to / from different line terminators
# On other platforms, it has no effect
in_txt = csv.reader(open(txt_file, "rb"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'wb'))

out_csv.writerows(in_txt)
用户回答回答于
>>> open('demo.txt', 'rb').read()
'h1\t"h2a\nh2b"\th3\r\nx1\t"x2a\r\nx2b"\tx3\r\ny1\ty2a\x1ay2b\ty3\r\n'

Python在以文本模式读取文件时遵循CP/M、MS-DOS和Windows:\r\n被确认为行分隔符,并被用作\n,和\x1a又名Ctrl-Z是公认的文件结束标志.

>>> open('demo.txt', 'r').read()
'h1\t"h2a\nh2b"\th3\nx1\t"x2a\nx2b"\tx3\ny1\ty2a' # WHOOPS

csv打开的文件与“RB”的工作方式如出一辙:

>>> import csv
>>> list(csv.reader(open('demo.txt', 'rb'), delimiter='\t'))
[['h1', 'h2a\nh2b', 'h3'], ['x1', 'x2a\r\nx2b', 'x3'], ['y1', 'y2a\x1ay2b', 'y3']]

但是文本模式没有:

>>> list(csv.reader(open('demo.txt', 'r'), delimiter='\t'))
[['h1', 'h2a\nh2b', 'h3'], ['x1', 'x2a\nx2b', 'x3'], ['y1', 'y2a']]
>>>

扫码关注云+社区

领取腾讯云代金券