вот массив слов Юникода, используемых в python script.
texts =[u"abc", u"pqr", u"mnp"]
script работает так, как ожидалось, с приведенным выше примером из трех слов. Проблема в том, что в текстовом файле есть тысячи слов. Как читать из текстового файла?
Update: У меня есть 2 вопроса. Последовательность слов из текстового файла не сохраняется на выходе. Текстовый файл имеет символы юникода и, следовательно, "u" в моем исходном примере.
# cat testfile.txt
Testing this file with Python
# cat test.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
f = open('testfile.txt', 'r')
texts = set(f.read().split())
print (texts)
# python test.py
set(['this', 'Python', 'Testing', 'with', 'file'])
Я не вижу проблем с кодом чтения файла. Учитывая, что слова появляются в файле, разделенном пробелом, и файл не слишком велик, чтобы его проглотили с помощью одного read
, он должен работать нормально. Реальная проблема - это порядок слов, если вы вставляете их в set
.
Если вам нужны слова в том же порядке, что и в файле, почему вы используете set
? Просто сохраните их в списке.
Если вам нужно set
удалить дубликаты и/или другие цели, то у вас есть следующие возможности:
OrderedDict
в Python с версии 2.7, а рецепты существуют в Интернете для более ранних версий.Это потому, что как работает набор. Они не поддерживают порядок элементов, хранящихся в наборе.
Из документации:
Заданный объект представляет собой неупорядоченный набор отдельных хешируемых объектов