从文本文件中的某些字符之间打印出随机字符串
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.
您好,我有一个名为“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.