如何在Python

时间:2017-03-14 02:24:47

标签: python-3.x csv

我有以下问题:

我想将制表符分隔的文本文件转换为csv文件。文本文件是SentiWS字典,我想用它来进行情感分析(https://github.com/MechLabEngineering/Tatort-Analyzer-ME/tree/master/SentiWS_v1.8c)。

我以前使用的代码如下:

txt_file = r"SentiWS_v1.8c_Positive.txt"
csv_file = r"NewProcessedDoc.csv"

in_txt = csv.reader(open(txt_file, "r"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'w'))

out_csv.writerows(in_txt)

此代码将所有内容写入一行,但我需要将数据放在文件本身通常所需的三行中。每个数据下面都有一个空白行,我不知道为什么。

我希望数据采用以下形式:

第1行 第2行 第3行

单词数据字

单词数据字

而不是

ROW1

字,数据字

字,数据字

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

import pandas

它会将制表符分隔符文本文件转换为数据帧

dataframe = pandas.read_csv("SentiWS_v1.8c_Positive.txt",delimiter="\t")

将数据帧写入CSV

dataframe.to_csv("NewProcessedDoc.csv", encoding='utf-8', index=False)

答案 1 :(得分:2)

试试这个:

import csv

txt_file = r"SentiWS_v1.8c_Positive.txt"
csv_file = r"NewProcessedDoc.csv"

with open(txt_file, "r") as in_text:
    in_reader = csv.reader(in_text, delimiter = '\t')
    with open(csv_file, "w") as out_csv:
        out_writer = csv.writer(out_csv, newline='')
        for row in in_reader:
            out_writer.writerow(row)

每个数据下面都有一个空白行,我不知道原因。

您可能正在使用在基于Windows的文本编辑器中创建或编辑的文件。根据{{​​3}}:

  

如果未指定newline='',则无法正确解释引用字段中嵌入的换行符,并且在写入时使用\r\n换行符的平台上将添加额外的\r。指定newline=''应始终是安全的,因为csv模块会执行自己的(the Python 3 csv module docs)换行处理。