Текстовый файл строки Python с разделением слов \ n не разделяется - PullRequest
1 голос
/ 09 апреля 2019

Мне дали длинный файл .txt, который при чтении возвращает одну длинную строку, представляющую собой большой набор слов, разделенных \ n, как показано:

\na+\nabound\nabounds\nabundance\nabundant\naccessable\naccessible\nacclaim\nacclaimed\nacclamation\naccolade\naccolades\naccommodative\naccomodative\naccomplish\naccomplished\naccomplishment...\nworld-famous\nworth\nworth-while\nworthiness\nworthwhile\nworthy\nwow\nwowed\nwowing\nwows\nyay\nyouthful\nzeal\nzenith\nzest\nzippy\n

Мне нужно разбить эту строку на список этих слов, но ни одна из команд, которые я обычно использую для файлов .csv, не работает. Я попытался удалить, заменяя (), split (), splitline (), и ничто не сломает это в список этих слов. Буду благодарен за любую помощь.

punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '[',']','@']
punctuation_chars2=["'", '"', ",", ".", "!",":",";",'#','[',']','@','\n']
    # list of positive words to use
    positive_words = []
    wrd_list = []
    new_list = []
    with open("positive_words.txt", 'r', encoding="utf-16") as pos_f:
        for lin in pos_f:
            if lin[0] != ';' and lin[0] != '\n':
                positive_words.append(lin.strip())

        pos_wrds = positive_words[0]
        pos_wrds.strip()
        print(pos_wrds)
        for p in punctuation_chars:
            pos_wrds = pos_wrds.replace(p,"")
        print(pos_wrds)


wrd_list = pos_wrds.splitlines()
new_list = wrd_list[-1].splitlines

Я хотел бы видеть список Python с каждым отдельным словом: list = [a +, в изобилии, в изобилии, в изобилии, в изобилии ...]

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

сплитлайн работает довольно хорошо:

In [1]: text = "\na+\nabound\nabounds\nabundance\nabundant\naccessable\naccessible\nacclaim\nacclaimed\nacclamation\naccolade\naccolades\naccommodative\naccomodative\naccomplish\naccomplished\naccomplishment...\nworld-famous\nworth\nw
   ...: orth-while\nworthiness\nworthwhile\nworthy\nwow\nwowed\nwowing\nwows\nyay\nyouthful\nzeal\nzenith\nzest\nzippy\n"                                                                                                                 

In [2]: text.splitlines()                                                                                                                                                                                                                 
Out[2]: 
['',
 'a+',
 'abound',
 'abounds',
 'abundance',
 'abundant',
 'accessable',
 'accessible',
 'acclaim',
 'acclaimed',
 'acclamation',
 'accolade',
 'accolades',
 'accommodative',
 'accomodative',
 'accomplish',
 'accomplished',
 'accomplishment...',
 'world-famous',
 'worth',
 'worth-while',
 'worthiness',
 'worthwhile',
 'worthy',
 'wow',
 'wowed',
 'wowing',
 'wows',
 'yay',
 'youthful',
 'zeal',
 'zenith',
 'zest',
 'zippy']
0 голосов
/ 09 апреля 2019

string.splitlines () работают со строками текстового файла Python.

Текстовый файл Python - это упорядоченная коллекция (последовательность) строк. Каждая строка является строкой, оканчивающейся на \ n. Таким образом, использование positive_words.append(lin.split('\\n')) работает, потому что для вашего файла вы должны экранировать символ обратной косой черты, чтобы он рассматривался как обратный слеш, а не как символ новой строки "\ n".

'''
print('\na+\nabound\nabounds\nabundance\nabundant\naccessable\naccessible\nacclaim\nacclaimed\nacclamation\naccolade\naccolades\naccommodative\naccomodative\naccomplish\naccomplished\naccomplishment...\nworld-famous\nworth\nworth-while\nworthiness\nworthwhile\nworthy\nwow\nwowed\nwowing\nwows\nyay\nyouthful\nzeal\nzenith\nzest\nzippy\n')
'''

# punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '[',']','@']
# punctuation_chars2=["'", '"', ",", ".", "!",":",";",'#','[',']','@','\n']

# list of positive words to use
positive_words = []
wrd_list = []
new_list = []
with open("positive_words.txt", 'r', encoding="utf-8") as pos_f:
    for lin in pos_f:
        positive_words.append(lin.split('\\n'))

    pos_wrds = positive_words[0]

print(pos_wrds)

#    for p in punctuation_chars:
#        pos_wrds = pos_wrds.replace(p,"----")
#    print(pos_wrds)

# wrd_list = pos_wrds.splitlines(0)
# new_list = wrd_list[-1].splitlines()

Ваши последние 6 строк необходимо изменить, потому что они используют строковые методы в списке, что вызывает ошибки.

Вам необходимо явно проверить наличие знаков препинания и не алфавитно-цифровых символов, поскольку в вашем файле есть знаки пунктуации в одном элементе «Выполнение ...» и «+» в другом.

Проверять каждый элемент списка отдельно как строку в списке pos_wrds. Кроме того, в вашем списке знаков препинания есть "\ n" и "@", которые являются управляющими и специальными символами (технически не знаки препинания).

Если вам действительно нужно проверить пунктуацию, используйте пакет Python string для проверки символов в наборе знаков пунктуации.

См. Лучший способ убрать пунктуацию из строки в Python для получения дополнительной информации о библиотеке String. Это потрясающе мощный !!

...