CCF 201509 3 模板生成系統

2021-08-31 16:39:03 字數 928 閱讀 4702

這題第三題又是前端類的模擬。

題目給定乙個模板,讓我們根據模板用引數替換其中的變數生成乙個特定的html文件

題目邏輯不難,考的也是字串類的,不過這種題一定要注意題目細節和細心做題。這種字串的題首選是用正規表示式來解題。

思路

簡單說下思路。一行行處理**,找到}模式的把這個模式識別到的字串替換成引數。最後輸出**

重要細節

如果標記中的變數沒有定義,則生成空串,相當於把標記從模板中刪除。

模板不遞迴生成。也就是說,如果變數的值中包含形如 } 的內容,不再做進一步的替換。(簡單的說就是每個匹配到的模式只替換一次,哪怕替換後還是}模式)

用python的re庫中的sub函式(替換函式)就可以很簡易的把內容替換掉。

python**

import re

def repl(match):

s = match.group()[3:-3]

return vs[s] if s in vs else ''

m, n = map(int, input().split())

codes =

for i in range(m):

vs = {}

for i in range(n):

k, v = input().split(' ', 1)

vs[k] = v[1:-1]

regex_obj = re.compile(r']* }}')

for i, line in enumerate(codes):

codes[i] = regex_obj.sub(repl, line)

for line in codes:

print(line)

CCF 201509 3 模板生成系統 正規表示式

題目就不貼了。這道題難度不是很大,只要會使用string的find函式和replace函式或者正規表示式就能將問題解決。總的來說這兩種方式的思路都是先匹配 然後替換裡面的值,下面是兩種方法的 如果你不會正規表示式,可以參考我的另一篇部落格正規表示式入門 正規表示式版 include using na...

CCF CSP 201509 3 模板生成系統

成成最近在搭建乙個 其中一些頁面的部分內容來自資料庫中不同的資料記錄,但是頁面的基本結構是相同的。例如,對於展示使用者資訊的頁面,當使用者為 tom 時,網頁的源 是 而當使用者為 jerry 時,網頁的源 是 這樣的例子在包含動態內容的 中還有很多。為了簡化生成網頁的工作,成成覺得他需要引入一套模...

ccf模板生成系統

這題目string處理的還是蠻不錯的,用到了getline,substr,find,等函式 include include using namespace std int main for int j 0 j str j 0 getline cin,str j 1 第二個有空格所以用getline ...