обработать и экспортировать текстовый файл в файл csv - PullRequest
0 голосов
/ 15 декабря 2018

Я использую этот код для получения текстового файла в качестве ввода и преобразования его в 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()

Я хочу улучшить код и добавить две функции: 1-й (и самый важный) Iхочу только слова в выходном файле, без цифр, без символов, таких как (* & - //.,!?) и так далее.2-й, чтобы превратить все слова в выходном файле в нижний регистр.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете использовать строковый метод isalpha () , чтобы проверить, есть ли в слове только буквенные символы, и вы можете использовать lower () , чтобы преобразовать его в нижний регистр.Я предполагаю, что вам не нужны апострофы или другие знаки препинания в ваших словах, но если это нормально, вы можете удалить такие символы с помощью замены, например так:

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

Также лучше простооткрыть файл один раз, чем открыть и закрыть его тысячу раз, что вы и делаете, открывая его в теле цикла.Это не только неэффективно, но и может привести к странным результатам, если задействована буферизация.

Я переписал его с помощью предложения 'with', которое примерно равно открытию файла в начале предложения и закрытию его вend.

Не так важно, но вы можете использовать ключевое слово 'sep' в print () вместо ручной вставки вкладки, например:

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)
...