2016-01-22 1 views
-1

Мне нужна помощь, сейчас я занимаюсь онлайн-курсом python, и я могу получить результат желания, чтобы выполнить задание.Python (2.7 ....) Проблемы с списком

в основном, есть текстовый документ, который мне нужно позвонить с помощью «raw_input» я затем использовать «открытые()» функции, а затем у меня есть пустой «список()»

Теперь я бегу " для "цикла для каждой строки в моем .txt doc, мне нужно" r.strip() "все пустое пространство, которое оставляет меня с 4-живым .txt документом (файл .txt будет внизу запроса) теперь я должен «.split()» эти строки в слова. теперь из i нужно цитировать через эти слова и «.append()» каждое слово, которое уже не находится в списке, затем «.sort()», затем напечатайте ... надеюсь, на этом этапе он выглядит как желаемый результат.

Просто, чтобы заставить меня почувствовать себя немного лучше, это первый раз, когда я делаю какие-либо кодировки. так что если бы вы могли объяснить, где и почему я ошибаюсь, это было бы здорово. CODE SO FAR - в настоящее время выдает ошибку

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
print lst 

.TXT ДОКУМЕНТ

But soft what light through yonder window breaks 
It is the east and Juliet is the sun 
Arise fair sun and kill the envious moon 
Who is already sick and pale with grief 

p.s - Там нет смысла менять .txt в одну строку, так как код он не будет работать в грейдер. Ive попытался (получил желаемый результат, неправильный код)

Пожалуйста, вы помогли бы с благодарностью.

Если вам больше не нужна информация, постарайтесь ее предоставить.

+2

"в настоящее время производит ошибку". Что именно, что именно? Можете ли вы добавить трассировку на свой вопрос? – Evert

+0

"" .append() "каждое слово, которое уже отсутствует в списке". Python ['set'] (https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset) может быть намного более удобным для этого. – Evert

+0

Ваш оператор 'if' не имеет кодового блока.Кроме того, вы ничего не делаете с 'lst' - это просто пустой список и никогда не меняется. –

ответ

0

Это будет читать файл, добавлять слова в список, сортировать список и распечатывать его.

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
      lst.append(words) 
lst.sort() 
print lst 
fh.close() 

lst.append(element) добавит element в список lst.

lst.sort() будет сортировать список lst в алфавитном порядке.

Заканчивать документ =>Lists

+0

So другими словами, я получал трассировку, потому что я фактически ничего не делал с самим списком? –

0
l = list() 
with open('inp.txt') as inp: 
     for each_line in inp: 
       a = each_line.strip() 
       l += a.split() 

print set(l) 

использования с ключевым словом, как это лучшая практика, как она будет закрывать файл после того, как operation.and для уникальной части использования набора(), который принимает только уникальные элементы

0

Вы также можете использовать set, который похож на список, но без дубликатов. Это означает, что вам не нужно самостоятельно проверять дубликаты, так как set сделает это для вас автоматически.

например:

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = set() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     lst.add(words) 
lst = list(lst) 
lst.sort() 
print lst 
0

Try список понимание для создания списка, использовать набор для удаления дубликатов записи

lst = [words for line in open(fname) for words in line.rstrip().split()] 
lst = list(set(lst)) 
lst.sort() 
print lst 

 Смежные вопросы

  • Нет связанных вопросов^_^