Автоматически разделять слова на буквы?

Итак, у меня есть этот код:

import sys  ## The 'sys' module lets us read command line arguments

words1 = open(sys.argv[2],'r') ##sys.argv[2] is your dictionary text file    
words = str((words1.read()))

def main():

    # Get the dictionary to search 
    if (len(sys.argv) != 3) :
        print("Proper format: python filename.py scrambledword filename.txt")
        exit(1)  ## the non-zero return code indicates an error
    scrambled = sys.argv[1]
    print(sys.argv[1])
    unscrambled = sorted(scrambled)
    print(unscrambled)

    for line in words:
        print(line)

Когда я печатаю слова, он печатает слова из словаря, по одному слову за раз, и это здорово. Но как только я пытаюсь что-то сделать с этими словами, как в моих последних двух строках, он автоматически разделяет слова на буквы и печатает одну букву в строке каждого слова. Есть ли способ сохранить слова вместе? Моя конечная цель - сделать order=sorted(line), а затем if (ordered==unscrambled) распечатать исходное слово из словаря?


person nanowaffle    schedule 17.01.2014    source источник
comment
что такое words? и можете ли вы показать мне образец вывода, который вы получаете, и ожидаемый результат?   -  person thefourtheye    schedule 17.01.2014
comment
Ну, он печатает весь словарь, то есть по одному слову в строке: трубкозуб, счеты, обвинение, но с каждым на отдельной строке в командном модуле. Я сделал снимок экрана. i.imgur.com/oM2aEf2.png   -  person nanowaffle    schedule 17.01.2014


Ответы (2)


Ваши слова являются примером str. Вы должны использовать split для перебора слов:

for word in words.split():
    print(word)
person Yossi    schedule 17.01.2014
comment
Большое спасибо. Вы спасатель жизни. - person nanowaffle; 17.01.2014

Цикл for берет по одному элементу из "последовательности", которую вы ему передаете. Вы прочитали содержимое вашего файла в одну строку, поэтому python рассматривает его как последовательность букв. Что вам нужно, так это преобразовать его в список самостоятельно: разбить его на список строк любого размера:

lines = words.splitlines()  # Makes a list of lines
for line in lines:
    ....

Or

wordlist = words.split()    # Makes a list of "words", by splitting at whitespace
for word in wordlist:
    ....
person alexis    schedule 17.01.2014