从文本文件中的某些字符之间打印出随机字符串

Print out a random string between certain characters from a text file

您好,我有一个名为“fortunes”的文本文件,其中包含大量包含许多不同引号的数据。每个引号以字符“%”分隔。我正在努力做的是制作一个代码,它将在整个文本文件中打印出 随机引号 ,这意味着随机打印应包含分隔符 (% ).有没有人有任何简单解决此问题的建议?如您所见,我已经开始做某事,但我不确定要随机包含在哪里。在这一切中发挥作用。 提前非常感谢

围绕 % 将文件分成一个列表,然后随机选择一个列表元素:

with open('fortunes.txt') as file:
  data = file.read()

quote = random.choice(data.split('%'))
print(quote)

我试过这个:

import random

with open('./quotes.txt') as file:
    quote = random.choice(file.read().split("%"))

print(quote)

一个名为 quotes.txt 的文本文件包含以下内容:

Random quote
- HeyHoo
%
Foo is a great bar to start you off in the morning
- HeyHoo
%
Try sham-foo today! It'll make turn your hair into a bar of gold!
- ShamFoo™️

而且效果很好。您应该 look into the split() function 并阅读文档。

假设 "in.txt"

%
A very deep quote.
  -- a very deep person.
%
An even deeper quote.
  -- an even deeper person.
%
An even deeper quote!
  -- an even deeper person!
%

注意它是如何以 % 开始和结束的。该程序会随机选择A very deep quote.An even deeper quote.An even deeper quote!之一并打印出来(与作者一起):

import random

with open("in.txt") as f:
    quotes = f.read().split('%')

# if file does not begin with nor end with '%' can exclude
# both of these "if not ..."
if not quotes[0].strip():
    del quotes[0]
if not quotes[-1].strip():
    del quotes[-1]

random_quote = random.choice(quotes).strip()
print(random_quote)

程序

  • 打开 "in.txt" 进行阅读。
  • f.read() returns "in.txt" 中所有文本的字符串(如果 "in.txt" 不是太大,则只调用不带参数的函数——默认情况下, read 的唯一参数是 size = -1,这意味着 return 文件中的所有字符)。
  • split('%') returns 字符串中“单词”的列表,使用 '%' 作为分隔符。由于未指定 split() 的可选第二个参数,因此会进行所有可能的拆分。
  • 当我们退出 with 块时,文件在内部自动为我们关闭。
  • 如果 quotes 的第一个或最后一个元素(去除前导和尾随空格)是空字符串,我们将其从列表中删除。我们这样做是为了让文件以 '%'.
  • 开头或结尾
  • random.choice(quotes) returns 从 quotes 中随机选择的元素(这将是一个字符串)。
  • strip() 从此字符串中删除前导和尾随空格。

程序的输出将是

之一
An even deeper quote!
  -- an even deeper person!

An even deeper quote.
  -- an even deeper person.

A very deep quote.
  -- a very deep person.