嗨,我有一個名為“fortunes”的文本檔案,其中包含很多包含許多不同引號的資料。每個引號用字符“%”分隔。我正在努力做的是制作一個代碼,該代碼將在整個文本檔案中列印出一個隨機參考,這意味著隨機列印應該包含一個位于分隔符(%)之間的字串。有沒有人有任何簡單的解決方法的建議?正如你所看到的,我已經開始做一些事情,但我不確定在哪里隨機包含。在這一切中發揮作用。非常感謝你提前

uj5u.com熱心網友回復:
將檔案拆分為一個串列%,然后選擇一個隨機串列元素:
with open('fortunes.txt') as file:
data = file.read()
quote = random.choice(data.split('%'))
print(quote)
uj5u.com熱心網友回復:
我試過這個:
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??
而且效果很好。您應該查看 split() 函式并閱讀檔案。
uj5u.com熱心網友回復:
假設"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()回傳包含所有文本的字串(如果不是太大,則"in.txt"僅呼叫不帶引數的函式- 默認情況下,唯一的引數is表示回傳檔案中的所有字符)。"in.txt"readsize = -1split('%')回傳字串中“單詞”的串列,'%'用作分隔符。由于split()未指定可選的第二個引數 of,因此進行了所有可能的拆分。- 當我們退出
with塊時,在內部,檔案會自動為我們關閉。 - 如果去掉前導和尾隨空格的第一個或最后一個元素
quotes是空字串,我們將其從串列中洗掉。我們這樣做是為了允許檔案以'%'. random.choice(quotes)回傳一個隨機選擇的元素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.
uj5u.com熱心網友回復:
感謝您的幫助。您所有的答案都提供了正確的代碼,并對您自己的代碼稍作修改。我還將進一步研究拆分功能以更好地理解:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463145.html
上一篇:美麗湯。2個問題:find_all回傳空串列以及如何遍歷封閉容器
下一篇:從檔案中讀取并添加到單獨的串列中
