簡體   English   中英

Python從文件中列出單詞列表

[英]Python make a list of words from a file

我正在嘗試從僅包含不包含任何重復字母(如“ hello”但包含“ helo”)的單詞的文件中列出單詞的列表。

當我使用僅通過輸入單詞創建的列表時,我的代碼單詞就完美了,但是當我嘗試使用文件列表創建代碼時,即使它們包含重復的字母,它也會打印所有單詞。

words = []
length = 5
file = open('dictionary.txt')
for word in file:
    if len(word) == length+1:
        words.insert(-1, word.rstrip('\n'))
alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
x = 0
while x in range(0, len(alpha)):
    i = 0
    while i in range(0, len(words)):
        if words[i].count(alpha[x]) > 1:
            del(words[i])
            i = i - 1
        else:
            i = i + 1
    x = x + 1
print(words)

您的dictionary.txt是什么樣的? 只要每個單詞都在單獨的行上(對於文件中的x逐行迭代),並且至少某些單詞具有5個非重復字母,您的代碼就應該起作用。

另外,一些技巧:

  • 您可以通過調用file.readlines()將文件中的行讀入列表中
  • 您可以使用集合檢查列表或字符串中的重復項。 集合會刪除所有重復的元素,因此檢查len(word) == len(set(word))是否會告訴您是否有重復的字母,其代碼少得多:)

此代碼段可添加單詞,並在插入之前刪除重復的字母

words = []
length = 5
file = open('dictionary.txt')
for word in file:
    clean_word = word.strip('\n')
    if len(clean_word) == length + 1:
        words.append(''.join(set(clean_word))

我們將字符串轉換為集合,該集合除去重復項,然后將集合再次連接到字符串:

>>> word = "helloool"
>>> set(word)
set(['h', 'e', 'l', 'o'])
>>> ''.join(set(word))
'helo'

我不是100%肯定要刪除這樣的重復項,所以我假設單詞中的字母不能超過一次(因為您的問題指定的是“重復字母”,而不是“雙字母”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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