在文本文件中找到6个字母的单词

时间:2017-08-07 02:41:09

标签: python python-3.x

我是Python的新手,所以我不知道如何在文本文件中找到所有6个字母的单词,然后随机选择其中一个单词。
第一个问题:我不知道如何在Mac中找到该文件的路径。 我知道它应该是这样的:

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

第二个问题:我是否创建一个空列表然后将文本文件中的单词转移到列表然后用于循环?
喜欢:

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

第三个问题:那么如何在列表中获得随机单词?

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)

答案 2 :(得分: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)

可以使用list comprehension缩短最后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 module中的choice函数:

import random

random_word = random.choice(six_letter_words)

答案 3 :(得分:0)

我认为以下内容符合您的要求并有效地回答您的所有子问题。

请注意server.properties将文件内容划分为由空格分隔的单词列表(例如空格,制表符和换行符)。

另请注意,我使用的def whatever(): for i in range(999 * 999): if ispalindrome(999 * 999 - i) and not isprime(999 * 999 - i): factors = listfactors(999 * 999 - i) for j in factors: if len(str(j)) == 3 and len(str(int((999 * 999 - i) / j))) == 3: return 999*999-i print(whatever()) 文件中只包含您问题中的三个字以供说明。

split()