我是python&的新手。这是我的问题: 打开文件romeo.txt并逐行读取。对于每一行,使用split()方法将该行拆分为单词列表。该程序应该建立一个单词列表。对于每行上的每个单词,检查该单词是否已经在列表中,如果没有将其附加到列表中。程序完成后,按字母顺序对生成的单词进行排序和打印。
这是文件:
但柔和通过窗户窗户打破的光线
是东方,朱丽叶是太阳
出现公平的太阳并杀死羡慕的月亮
谁已经病了,脸色苍白,悲伤
期望的输出:
[' Arise','但',' It',' Juliet',#39; Who',&& #39;已经','和','休息','东','羡慕','公平&# 39;,'悲伤',''杀死','轻','月亮',&# 39;苍白','生病','软'' sun''''''' ,'什么','窗口','与',' yonder']
这是我的代码:
fname = raw_input("Enter file name: ")
fh = open(fname)
lst = list()
#loop through the text to get the lines
for line in fh:
line = line.rstrip()
#loop through the line to get the words
for word in line:
words = line.split()
#if a word is not in the empty list, append it
if not word in lst: lst.append(word)
lst.sort()
print lst
我的输出:
[' ',' A',' B','我',' J',' W', ' a',''' c',' d',' e',' f& #39;,'' h','我',' k',' l',& #39; m',' n',' o',' p',' r',' s&# 39;,'' u',' v',' w',' y']
如果你能告诉我什么是错的(只能在开头用空格而不是整个单词的第一个字母),那就太好了..
注意:我希望代码使用这些说明,而不是其他高级指令(以保持我的学习顺序)
谢谢
答案 0 :(得分:0)
你应该在线上调用split()
,而不是行中的文字。
for line in file:
result = line.split() # this returns a list of values
for word in result:
# check if it already is in your list of words
list.sort()
答案 1 :(得分:0)
让我们逐行采用代码
for line in fh:
line = line.rstrip()
所以现在我们的第一个line
包含"但是通过yonder窗口打破了什么光"并且它是一个字符串。
for word in line:
啊,但是现在,我们已经说过了#34;让我们重复line
(一个字符串),让word
成为我们经历的每一部分循环。但是line
是一个完整的字符串!当您迭代这样的字符串时,您一次只能得到一个字母,这就是您在结果中看到的内容。
相反,没有那个for
循环,只是像以前那样分割线:
for line in fh:
line = line.rstrip()
words = line.split()
for word in words:
if word not in lst:
lst.append(word)
答案 2 :(得分:0)
试试这个:
with open('test.txt') as f:
words = []
for line in f:
if line:
words.extend(line.split())
print(sorted(set(words)))
输出:
['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']
答案 3 :(得分:0)
你想要的小事就是这一行
SELECT CASE WHEN column1 IS NULL THEN column2 WHEN column2 IS NULL THEN column1 ELSE column1 || "|" || column2 END FROM someTable
这样做就是行 =>单词列表
现在它是char列表(一个简单的字符串)。尝试在您的示例中打印文字并在使用 line.split()后打印文字,您将会有更好的想法。
结帐此链接> how to use split