簡體   English   中英

將列表中的字符串拆分成Python中的單詞

[英]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]

上面是一個使用嵌套循環並避免appendextend的解決方案。 但是,可以使用嵌套的生成器表達式非常簡潔地完成整個行的拆分和排序。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM