目录
How to generate random words in Python
在 Python 中生成随机词
从文件系统生成一个随机词:
- 以阅读模式打开文件。
- 使用
str.splitlines()
orstr.split()
方法将文件的内容拆分成一个列表。 - 使用该
random.choice()
方法根据需要从列表中随机挑选尽可能多的单词。
import random import requests # ✅ Random word generator using local file system def get_list_of_words(path): with open(path, 'r', encoding='utf-8') as f: return f.read().splitlines() words = get_list_of_words('/usr/share/dict/words') print(words) random_word = random.choice(words) print(random_word) # 👉️ sales # -------------------------------------------------- # ✅ Random word generator using remote database def get_list_of_words(): response = requests.get( 'https://www.mit.edu/~ecprice/wordlist.10000', timeout=10 ) string_of_words = response.content.decode('utf-8') list_of_words = string_of_words.splitlines() return list_of_words words = get_list_of_words() print(words) random_word = random.choice(words) print(random_word) # 👉️ oven
第一个代码示例从本地文件系统上的文件生成随机词。
如果您使用的是 Linux 或 macOS,则可以使用该/usr/share/dict/words/
文件。
如果你在 Windows 上,你可以使用
这个 MIT word list。
.txt
我们使用该with
语句以阅读模式打开文件。
该语句会自动为我们关闭文件。
import random import requests def get_list_of_words(path): with open(path, 'r', encoding='utf-8') as f: return f.read().splitlines() words = get_list_of_words('/usr/share/dict/words') print(words) random_word = random.choice(words) print(random_word) # 👉️ sales
如果您使用的不是 macOS 或 Linux,请确保更新路径。
我们使用file.read()
方法将文件内容读入字符串。
str.splitlines
方法在换行符处
拆分字符串并返回包含字符串中的行的列表。
multiline_str = """\ bobby hadz com""" lines = multiline_str.splitlines() print(lines) # 👉️ ['bobby', 'hadz', 'com']
如果文件中的单词由空格分隔,请改用该str.split()
方法。
string = "bobby hadz . com" lines = string.split() print(lines) # 👉️ ['bobby', 'hadz', '.', 'com']
str.split ()
方法使用定界符将字符串拆分为子字符串列表。
str.split()
方法时,它会将输入字符串拆分为一个或多个空白字符。如果您需要从列表中随机选择一个单词,请使用random.choice()
方法。
import random def get_list_of_words(path): with open(path, 'r', encoding='utf-8') as f: return f.read().splitlines() words = get_list_of_words('/usr/share/dict/words') print(words) random_word = random.choice(words) print(random_word) # 👉️ unbreakable
random.choice方法接受
一个序列并从非空序列返回一个随机元素。
如果您需要从列表中随机选择 N 个单词,请使用列表理解。
import random def get_list_of_words(path): with open(path, 'r', encoding='utf-8') as f: return f.read().splitlines() words = get_list_of_words('/usr/share/dict/words') print(words) n_random_words = [ random.choice(words) for _ in range(3) ] # 👇️ ['computers', 'praiseworthiness', 'shareholders'] print(n_random_words)
我们使用列表理解来迭代一个range
对象。
范围类通常用于循环特定次数。
在每次迭代中,我们调用该random.choice()
方法来选择一个随机单词并返回结果。
从远程数据库生成随机词(HTTP 请求)
从远程数据库生成随机词:
- 向存储单词列表的数据库发出 HTTP 请求。
- 使用该
random.choice()
方法从列表中随机选择一个单词。 - 可选地,使用列表理解从列表中随机选择 N 个单词。
import random import requests def get_list_of_words(): response = requests.get( 'https://www.mit.edu/~ecprice/wordlist.10000', timeout=10 ) string_of_words = response.content.decode('utf-8') list_of_words = string_of_words.splitlines() return list_of_words words = get_list_of_words() print(words) random_word = random.choice(words) print(random_word) # 👉️ zoo
如果您没有安装该requests
模块,请运行以下命令来安装它。
# 👇️ in a virtual environment or using Python 2 pip install requests # 👇️ for python 3 (could also be pip3.10 depending on your version) pip3 install requests
你可以在浏览器中打开麻省理工学院单词表查看内容。
该列表包含 10,000 个单词,每个单词占一行。
我们使用该bytes.decode()
方法将字节对象转换为字符串。
bytes.decode
方法返回从给定字节解码的字符串。默认编码是
utf-8
.
str.splitlines()
方法将字符串拆分为单词列表。如果您的数据库响应包含以空格分隔的单词的长字符串,请改用该str.split()
方法。
string = "bobby hadz . com" lines = string.split() print(lines) # 👉️ ['bobby', 'hadz', '.', 'com']
如果您需要从列表中随机选择一个单词,请使用random.choice()
方法。
import random import requests def get_list_of_words(): response = requests.get( 'https://www.mit.edu/~ecprice/wordlist.10000', timeout=10 ) string_of_words = response.content.decode('utf-8') list_of_words = string_of_words.splitlines() return list_of_words words = get_list_of_words() print(words) random_word = random.choice(words) print(random_word) # 👉️ global
如果您需要从列表中随机选择 N 个单词,请使用列表理解。
import random import requests def get_list_of_words(): response = requests.get( 'https://www.mit.edu/~ecprice/wordlist.10000', timeout=10 ) string_of_words = response.content.decode('utf-8') list_of_words = string_of_words.splitlines() return list_of_words words = get_list_of_words() print(words) n_random_words = [ random.choice(words) for _ in range(3) ] # 👇️ ['clerk', 'trust', 'tr'] print(n_random_words)
列表理解遍历range
长度为 N 的对象,并调用
random.choice()
方法在每次迭代中选择一个随机单词。