处理并将文本文件导出到csv文件

时间:2018-12-14 23:08:17

标签: python csv text export-to-csv

我正在使用此代码获取文本文件作为输入,并将其转换为csv文件作为输出。 csv文件有两列,一列用于单词,另一列用于单词计数。

from collections import Counter
file = open(r"/Users/abdullahtammour/Documents/txt/1984/1984.txt", "r", encoding="utf-8-sig")
wordcount={}
wordcount = Counter((file.read().split()))
for item in wordcount.items():
    print("{}\t{}".format(*item), file=open("/Users/abdullahtammour/Documents/txt/1984/1984.csv", "a"))
file.close()

我想增强代码并添加两个功能: 第一(也是最重要的),我只想要输出文件中的单词,没有数字,没有诸如(*&-//。,!?)之类的字符,等等。 2将输出文件中的所有单词都转换为小写。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用字符串方法 isalpha()来检查单词中是否只有字母字符,还可以使用 lower()将其转换为小写案件。我假设您也不想在单词中使用撇号或其他标点符号,但是如果可以的话,可以使用replace去除此类字符,如下所示:

word.replace("'",'').isalpha()

打开一个文件比打开和关闭文件一千次更好,这是通过在循环主体中打开文件来完成的。如果涉及缓冲,它不仅效率低下,而且可能会产生奇怪的结果。

我用一个'with'子句重写了它,大致等于在该子句的开头打开文件,然后在结尾将其关闭。

不那么重要,但是您可以在 print()中使用'sep'关键字,而不是像这样手动插入标签:

print(arg1, arg2, sep='\t')

修改您的代码:

from collections import Counter
file = open(r"/Users/abdullahtammour/Documents/txt/1984/1984.txt", "r", encoding="utf-8-sig")
wordcount={}
wordcount = Counter((file.read().split()))
file.close()

with open("/Users/abdullahtammour/Documents/txt/1984/1984.csv", "w") as file:
    for word, count in wordcount.items():
        if word.isalpha():
            print(word.lower(), count, sep='\t', file=file)