第6行输入不好?

时间:2017-06-21 22:02:42

标签: python-2.7 sorting split

在我的代码中,我不知道为什么它是错的我尝试过多种不同的方式,但它们不起作用。我希望它打印出来:

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

romeo.txt是文本文档名称 这是什么内部:

  “但是通过那个窗户打破的光是柔和的东西   朱丽叶是太阳升起公平的太阳,杀死羡慕的月亮是谁   已经病了,脸色苍白悲伤“

输出也按字母顺序排列。

fname = "romeo.txt"#raw_input("Enter file name: ")
fh = open(fname)
lst = list()
for line in fh:
    lst.append(line)
    words = lst.split(line)
#   line = line.sort()
print lst

1 个答案:

答案 0 :(得分:1)

fname = "romeo.txt"
fh = open(fname)
lst = []
for line in fh:
    words = lst.split(line) # this comes first
    lst.extend(words) # add all the words to the current list

lst = sorted(lst) # sorts lexicographically   
print lst

代码中的注释。基本上,拆分您的线并将其累积在您的列表中。排序应该在最后完成一次。

(稍微)更多的pythonic解决方案:

import re
lst = sorted(re.split('[\s]+', open("romeo.txt").read(), flags=re.M))

正则表达式会根据正则表达式(分隔符作为空格)将文本拆分为单词列表。其他一切基本上都是多行压缩成1。