python - 试图从文本文档(python)中获取随机行
问题描述
我是 python 新手,正在使用 Discord.py 开发一个不和谐机器人。我试图做到这一点,所以当你输入 %quote 时,它会从文本文件中得到一个随机行。但由于某种原因,它跳过了第一行或两行。也许我弄错了逻辑?这是我的代码。
@commands.command()
async def quote(self, ctx, Qnum='janfol91213sdf2uieh1あ2Ⅳ3sんksnaaksd'):
i = 0
if Qnum == 'janfol91213sdf2uieh1あ2Ⅳ3sんksnaaksd':
f = open("cogs\Base\data\Quotes.txt")
random_lines = random.choice(f.readlines())
await ctx.send(random_lines)
else:
f = open("cogs\Base\data\Quotes.txt")
for line in f:
if i == int(Qnum):
quote = f.readline()
f.close()
break
else:
i = i+1
await ctx.channel.send(quote)
f.close()
随机 Qnum 的东西是可选参数或其他东西
解决方案
假设您的 txt 文件看起来像这样:
quote1
quote2
您可以读取 txt 文件并用 \n 将其拆分,如下所示:
import random
with open('file.txt', 'r') as f:
read = f.read()
array = read.split('\n')
quote = random.choice(array)
await ctx.channel.send(quote)
为了确保它不会跳过任何行,您可以使用 print(array) 将带有引号的数组打印到控制台
推荐阅读
- mysql - 选择并跳过 MySQL 结果
- c - 编写一个函数,从 C 中的字符串中删除最后一个字符。分段错误(核心转储)错误
- symfony - 集合字段更改(添加或删除)时不会触发 LifeCycleCallback
- google-cloud-platform - 我可以在 GKE 上使用以前的 GCP Ubuntu 操作系统版本吗?
- html - 在 Angular 6 中将 HTML 转换为 PDF
- javascript - 这个 ("board[y][x].cell") 方法是什么意思?
- c++ - Linux C++ 中的页面对齐内存分配
- ocaml - 为什么我收到“此表达式的类型为 int 但表达式应为浮点类型”错误?
- docker - docker主机上所有容器的文件权限错误
- javascript - 按住“输入”键并按住时如何防止触发按钮事件?