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