У меня есть вопрос относительно того, как сохранить целевые слова в списке.

У меня есть текстовый файл:

apple tree apple_tree
banana juice banana_juice
dinner time dinner_time
divorce lawyer divorce_lawyer
breakfast table breakfast_table

Я хотел бы прочитать этот файл и хранить только существительные ... но я борюсь с кодом на Python.

file = open("text.txt","r")
for f in file.readlines():
    words.append(f.split(" "))

Я не знаю, как разбить линии по пробелам и устранить соединения с "_" ...

list = [apple, tree, banana, juice, dinner, time...]
1
sat 9 Июл 2019 в 17:18

3 ответа

Лучший ответ

Этот код хранит только слова без подчеркивания и все в одном списке вместо вложенного списка:

words = []
file = open("text.txt","r")
for f in file.readlines():
    words += [i for i in f.split(" ") if not '_' in i]
print(words)
0
Frank Buss 9 Июл 2019 в 14:41

Попробуйте этот код. Работает нормально.

Оба вышеуказанных подхода будут работать. ИМО сначала лучше (регулярные выражения могут быть дорогостоящими), а также более питонным

Код .

temp = """apple tree apple_tree
banana juice banana_juice
dinner time dinner_time
divorce lawyer divorce_lawyer
breakfast table breakfast_table"""

new_arr = [i for i in temp.split() if not '_' in i]
print(new_arr)

Выход .

['apple', 'tree', 'banana', 'juice', 'dinner', 'time', 'divorce', 'lawyer', 'breakfast', 'table']
2
Usman 9 Июл 2019 в 14:34
import re

file = ["apple tree apple_tree apple_tree_tree apple_tree_ _",
"banana juice banana_juice",
"dinner time dinner_time",
"divorce lawyer divorce_lawyer",
"breakfast table breakfast_table"]

#approach 1 - list comprehensions
words=[]
for f in file:
    words += [x for x in f.split(" ") if '_' not in x]

print(words)

#approach 2 - regular expressions
words=[]
for f in file:
    f = re.sub(r"\s*\w*_[\w_]*\s*", "", f)
    words += f.split(" ")

print(words)

Оба вышеуказанных подхода будут работать. ИМО сначала лучше (регулярные выражения могут быть дорогостоящими), а также более питонным

0
Aditya Guru 9 Июл 2019 в 14:45