【发布时间】:2016-07-28 04:33:46
【问题描述】:
我有一个 txt 文件,它有 214 列(数据由空格分隔)和大约一百万行。
我想把txt转成csv,用过这段代码:
import csv
txt_file = r"myfile.txt"
csv_file = r"myfile.csv"
in_txt = csv.reader(open(txt_file, "r"), delimiter = " ", quotechar=" ")
out_csv = csv.writer(open(csv_file, 'w', newline='\n'),delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL)
out_csv.writerows(in_txt)
但这会将我的数据导出到一个 csv 文件中,其中所有列都用空格分隔,在 excel 的第一个 A 列中......我最终希望能够将 txt 转换为 csv 并在处理删除10th-48th, 50-61, 65, 67, 68, 71-75, 77, 78, 80-88, 91, 93, 96-100, 102, 105-110, 112-114, 116-119, 122-126, 128-134, 136-140, 142-151, 153-155, 160-162, 165-169, 172-173, 175-177, 179-187, 189-196, 198, 199 & 201-214 列。我确信这很简单,但我正在努力研究如何去做
【问题讨论】:
-
为什么
csv.writer中的分隔符为' '? -
因为我认为 delimiter 是在询问是什么分隔了我的数据...它是一个空格...所以我放了一个空格 :-D
-
啊...不,对于
csv.writer,这就是输出中将使用的分隔符。它根据您传递给writerow或writerows的内容获取字段(对于普通作家来说,这只是writerows的列表或列表) -
reader的delimiter必须与您当前的格式匹配,而writer的delimiter应该是您想要的格式。writer永远不会与原始csv一起使用,这就是拥有单独的reader的意义所在。