[英]Split string within list into words in Python
我是Python的新手,我需要用Python編寫一個代碼,該代碼將讀取一個文本文件,然后將其中的每個單詞拆分,排序並打印出來。
這是我寫的代碼:
fname = raw_input("Enter file name: ")
fh = open(fname)
lst = list()
words = list()
for line in fh:
line = line.strip()
line.split()
lst.append(line)
lst.sort()
print lst
那是我的輸出-
['升起陽光,殺死令人羡慕的月亮','但要柔和透過窗外的光線,'是東方,朱麗葉是太陽','誰已經病了,臉色蒼白,身上帶有更嚴密的密碼,' ','yonder']
但是,當我嘗試拆分lst.split()
它說
列表對象沒有屬性拆分
請幫忙!
您應該使用分隔線 extend
新列表,而不是在追加后嘗試分割字符串:
for line in fh:
line = line.strip()
lst.extend(line.split())
問題是split()
不會神奇地改變拆分為list
的字符串。 您必須做些返回值。
for line in fh:
# line.split() # expression has has no effect
line = line.split() # statement does
# lst += line # shortcut for loop underneath
for token in line:
lst = lst + [token]
lst += [token]
上面是一個使用嵌套循環並避免append
和extend
的解決方案。 但是,可以使用嵌套的生成器表達式非常簡潔地完成整個行的拆分和排序。
print sorted(word for line in fh for word in line.strip().split())
你可以做:
fname = raw_input("Enter file name: ")
fh = open(fname, "r")
lines = list()
words = list()
for line in fh:
# get an array of words for this line
words = line.split()
for w in words:
lines.append(w)
lines.sort()
print lines
為避免重復:
no_dups_list = list()
for w in lines:
if w not in no_dups_list:
no_dups_list.append(w)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.