2017-08-07 110 views
0

我是Python的新手,所以我不知道如何在文本文件中查找所有6個字母的單詞,然後隨機選擇其中一個單詞。
第一個問題:我不知道如何在Mac中找到文件的路徑。 我知道它應該是這樣的:在文本文件中查找6個字母的單詞

infile = open(r'C:\Users\James\word.txt', 'r') 

問題二:我創建一個空的名單,然後在文本文件中的單詞轉移到列表,然後使用循環?
像:

words = ['adcd', 'castle', 'manmen'] 
for n in words: 
    if len(n) ==6: 
     return n 

第三個問題:那我怎麼在列表中的隨機字?

+1

恩,Mac沒有C:\驅動器,所以第一個代碼不正確 –

+1

將文本文件放在與.py文件相同的目錄中。然後使用'open('word.txt')'沒有路徑。 –

+0

你的python文件位於你的文本文件的哪裏? –

回答

0

首先,將您的文件放在與.py文件相同的文件夾中。

那就試試這個:

# Create a list to store the 6 letter words 
sixLetterWords= [] 
# Open the file 
with open('word.txt') as fin: 
    # Read each line 
    for line in fin.readlines(): 
     # Split the line into words 
     for word in line.split(" "): 
      # Check each word's length 
      if len(word) == 6: 
       # Add the 6 letter word to the list 
       sixLetterWords.append(word) 
# Print out the result 
print(sixLetterWords) 
1

你可以使用正則表達式來發現所有的6個字母的單詞:

import re 
word_list = list() 
with open('words.txt') as f: 
    for line in f.readlines(): 
     word_list += re.findall(r'\b(\w{6})\b', line) 

正則表達式在行動:

In [129]: re.findall(r'\b(\w{6})\b', "Here are some words of varying length") 
Out[129]: ['length'] 

然後使用random.choice挑來自該列表的隨機詞:

import random 
word = random.choice(word_list) 
0

如果您使用的是Python 3.5或更高版本,請自己幫忙,並學習使用pathlib.Path對象。要查找用戶主目錄中的文件,只要做到這一點:

from pathlib import Path 

home_path = Path.home() 
in_path = home_path/'word.txt' 

現在in_path是指向在用戶主目錄的頂部被稱爲「WORD.TXT」文件的路徑狀物體。您可以安全,輕鬆地獲取文本指出的對象,並把它分割成單個的詞爲好,這樣說:

text = in_path.read_text() # read_text opens and closes the file 
text_words = text.split() # splits the contents into list of words at all whitespace 

使用append()方法將單詞添加到您的單詞列表:

six_letter_words = [] 
for word in text_words: 
    if len(word) == 6: 
     six_letter_words.append(word) 

最後3行可以使用列表理解,這是非常好的Python語法創建代替列表(而無需編寫一個for循環或使用append方法)被縮短:

six_letter_words = [word for word in words if len(word) == 6] 

如果你想確保你不會用數字和標點符號得到的話,使用isalpha()檢查:

six_letter_words = [word for word in words if len(word) == 6 and word.isalpha()] 

如果數字是確定的,但你不想標點符號,使用isalnum()檢查:

six_letter_words = [word for word in words if len(word) == 6 and word.isalnum()] 

最後:在你的列表中隨機字,使用來自random modulechoice功能:

import random 

random_word = random.choice(six_letter_words) 
0

我覺得FO在做你想做的事情,並有效地回答你所有的子問題。

請注意,split()將文件的內容分割成由空格(如空格,製表符和換行符)分隔的單詞列表。

另外請注意,我使用了一個word.txt文件,其中只有您的問題中的三個單詞用於說明。

import random 
import os 

with open(os.path.expanduser('~James/word.txt'), 'r') as infile: 
    words = [word for word in infile.read().split() if len(word) == 6] 

print(words) # -> ['castle', 'manmen'] 
print(random.choice(words)) # -> manmen 
相關問題