簡體   English   中英

Python多行字符串格式

[英]Python multiline string format

我正在嘗試使用腳本為我生成一些makefile。 我想格式化這個多行字符串,但我收到一個奇怪的錯誤。

碼:

make_content = """ PCC = pgcc 
%(bench)_serial: src/main.c src/%(bench)_serial.c ../common/util.c
\t$(PCC) $(ACCFLAGS) -o bin/%(bench)_serial src/main.c src/%(bench)_serial.c

clean:
\trm -rf *.o *.oo bin/*""" % {'bench':'umpalumpa'}

錯誤:

Traceback (most recent call last):
  File "./new_bench.py", line 27, in <module>
    \trm -rf *.o *.oo bin/*""" % {'bench':'umpalumpa'}
ValueError: unsupported format character '_' (0x5f) at index 21

有任何想法嗎?

注意:這是makefile的截斷版本,沒有評論。 注釋[2]:'umpalumpa'是占位符,以確保它是一個字符串。 有一天它會成為真實的東西。

編輯:我正在使用python 2.7

因為你已經得到了為什么不起作用的答案,一個更好的方法,並建議使用if format函數(如果你使用`Python 2.6+): -

"src/{bench}_serial.c".format(bench='umpalumpa')

所以,對於你的字符串,它變成: -

ake_content = """ PCC = pgcc 
{bench}_serial: src/main.c src/{bench}_serial.c ../common/util.c
\t$(PCC) $(ACCFLAGS) -o bin/{bench}_serial src/main.c src/{bench}_serial.c

clean:
\trm -rf *.o *.oo bin/*""".format(bench='umpalumpa')

您需要在映射鍵后指定轉換類型

"%(bench)s_serial" % {'bench':'umpalumpa'}

注意下划線之前的s 這里的輸出仍然是"umpalumpa_serial"

轉換類型始終是必需的,並始終位於%和任何可選組件之后。

格式化三引號字符串文字和單引號字符串文字之間沒有區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM