自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一日一技:如何正確處理多行字符串的縮進(jìn)問題

開發(fā) 前端
在Python里面,三引號表示多行字符串。在一對三引號之間的所有字符都是這個多行字符串的一部分。包括你在Python里面習(xí)以為常的縮進(jìn)。

有時(shí)候,我們需要使用多行字符串配合format格式化函數(shù)來生成Markdown文本。例如,我現(xiàn)在開發(fā)了一個AI對話機(jī)器人,我發(fā)送一個txt文件過去,他首先幫我總結(jié)整個文件的內(nèi)容,然后以問答的形式列出10個要點(diǎn)。

你的代碼可能是這樣寫的:

def bot(text):
    summary = summary_text_by_gpt(text)
    qa = get_qa_by_gpt(text)

    output = '''
    ## 文本總結(jié)

    {summary}

    ## 核心問答

    {qa}
    '''
    return output

返回Markdown以后,通過前端渲染出正常的文本。

但如果你直接這樣寫,你會發(fā)現(xiàn)Markdown的渲染好像出問題了。如下圖所示:

圖片圖片

為什么會出現(xiàn)這個問題呢?其實(shí)很簡單,因?yàn)槟愕腗arkdown文本有問題。我們來看一下正常的Markdown長什么樣:

圖片圖片

你上下對比看看,會不會覺得非常疑惑,這明明就是一樣的,為什么下面可以上面不行?實(shí)際上,他們關(guān)鍵的差異,就在于你看不到的空格:

圖片圖片

在Python里面,三引號表示多行字符串。在一對三引號之間的所有字符都是這個多行字符串的一部分。包括你在Python里面習(xí)以為常的縮進(jìn)。

我們使用repr命令來看看這個有縮進(jìn)的output實(shí)際上長什么樣:

圖片圖片

注意到了嗎,在函數(shù)里面定義多行字符串時(shí),很容易把縮進(jìn)帶進(jìn)來,導(dǎo)致##前面有空格,于是這就變成了不合法的Markdown。

要解決這個問題其實(shí)也非常簡單,在多行字符串定義的時(shí)候,不要縮進(jìn):

圖片圖片

但這樣你有沒有覺得代碼變得非常丑?參差不齊。如果你定義多行字符串時(shí)還是在更深的縮進(jìn)里面,代碼會更難看,如下圖所示:

圖片圖片

這可太丑了,要是被那些不喜歡Python縮進(jìn)的人看到,又要被調(diào)侃了。

其實(shí)要解決這個問題非常簡單,使用Python自帶的textwrap模塊中的dedent就可以了。它可以自動移除多行字符串每一行的前導(dǎo)空格。如下圖所示:

圖片圖片

這樣一來,既兼顧了多行字符串的美觀,又不會因?yàn)榭s進(jìn)導(dǎo)致Markdown渲染失敗。

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2024-01-29 00:45:36

跨域后端接口

2022-11-06 21:04:49

字符串字段參數(shù)

2024-07-30 08:16:18

Python代碼工具

2021-05-08 19:33:51

移除字符零寬

2021-10-20 20:02:47

字符變量函數(shù)

2022-06-20 19:37:59

Python字符串HTML

2021-09-14 21:29:01

項(xiàng)目環(huán)境變量

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2021-10-15 21:08:31

PandasExcel對象

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2022-03-12 20:38:14

網(wǎng)頁Python測試

2020-12-04 06:39:25

爬蟲網(wǎng)頁

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2023-10-28 12:14:35

爬蟲JavaScriptObject

2024-07-30 08:11:16

2022-08-26 09:34:19

單元測試代碼項(xiàng)目

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-01-08 05:17:16

重復(fù)值JSON爬蟲

2022-03-07 09:14:04

Selenium鼠標(biāo)元素

2021-02-14 22:22:18

格式圖片 HTTP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號