字符串占位符不支持的格式字符

时间:2017-12-10 13:29:07

标签: python

我想使用python生成乳胶文档。所以我创建了一个模板并使用字符串占位符来改变值。

  

template = r'''

     

\ {的DocumentClass文章}

     

\ usepackage [left = 2.54cm,right = 2.54cm,top = 2.54cm] {geometry}   \ usepackage [english] {babel} %%%' french',' german',' spanish',   ' danish'等。\ usepackage {amssymb} \ usepackage {txfonts}   \ usepackage {mathdots} \ usepackage {pifont} \ usepackage {wasysym}   \ usepackage {amssymb} \ usepackage {tabularx,pbox}

     

\开始{文件}

     

\ noindent表格A

     

\ noindent \ newline

     

\ noindent \ textbf {将香港国际机场扩展为一个   三跑道系统}

     

\ noindent海上旅游路线和高速管理计划   SkyPier轮渡

     

\ noindent \ textbf {\ underbar {}}

     

\ noindent \ textbf {\ underbar {环境审核检查记录}}

     

\ noindent

     

\ begin {tabularx} {\ linewidth} {| l | X |} \ hline参考计划:&海洋   SkyPier高速渡轮的旅行路线和管理计划   (EP条件2.10)\ \ hline监测数据:&渡轮运动数据   在\ textbf {\ underbar {"%(start_date)s"之间的时间段内收集至   "%(end_date)s"}} \ \ hline信息和数据已检查:& \ CheckedBox   自动识别系统(AIS)Data \ newline \ CheckedBox Daily   SkyPier HSF动作\换行\ CheckedBox记录潜力   偏差\换行\ CheckedBox渡轮提供的响应   运营商\ \ hline评论和观察:&的偏差   检查了SkyPier HSF计划的实施情况。八个通知是   AAHK向渡轮运营商发出与潜在超速行驶相关的运营商   SCZ,不通过登机口接入点和\ \ hline

     

\ {端} tabularx

     

\ noindent \ newline \ newline \ newline \ newline \ newline \ newline

     

\ begin {tabularx} {\ linewidth} {| l | X | X | X |} \ hline& ET Leader \换行   ET的代表& IEC \ newline IEC的代表& PM \ newline   PM的代表\ \ hline签名&& \ \ \ hline名称&特伦斯   Kong&& \ \ hline \ end {tabularx}

     

\ noindent

     

\ {端文档}

     

'''

但是,当我尝试运行时

page = template % {'start_date' : 'a', 'end_date' : 'b' }

返回

ValueError: unsupported format character ''' (0x27) at index 120

1 个答案:

答案 0 :(得分:1)

问题在于行中的require(plyr) require(dplyr) ddplym <- function(.data, .variables, .fun, ..., .margin = TRUE, .margin_name = '(all)') { if (.margin) { df <- .ddplym(.data, .variables, .fun, ..., .margin_name = .margin_name) } else { df <- ddply(.data, .variables, .fun, ...) if (.variables %>% length == 0) { df$.id <- NULL } } return(df) } .ddplym <- function(.data, .variables, .fun, ..., .margin_name = '(all)' ) { .variables <- as.quoted(.variables) n <- length(.variables) var_combn_idx <- lapply(0:n, function(x) { combn(1:n, n - x) %>% alply(2, c) }) %>% unlist(recursive = FALSE, use.names = FALSE) data_list <- lapply(var_combn_idx, function(x) { data <- ddply(.data, .variables[x], .fun, ...) # drop '.id' column created when no variables to split by specified if (!length(.variables[x])) data <- data[, -1, drop = FALSE] return(data) }) # workaround for NULL .variables if (unlist(.variables) %>% is.null && names(.variables) %>% is.null) { data_list <- data_list[1] } else if (unlist(.variables) %>% is.null) { data_list <- data_list[2] } if (length(data_list) > 1) { data_list <- lapply(data_list, function(data) rbind_pre( data = data, colnames = colnames(data_list[[1]]), fill = .margin_name )) } Reduce(rbind, data_list) } rbind_pre <- function(data, colnames, fill = NA) { colnames_fill <- setdiff(colnames, colnames(data)) data_fill <- matrix(fill, nrow = nrow(data), ncol = length(colnames_fill)) %>% as.data.frame %>% setNames(colnames_fill) cbind(data, data_fill)[, colnames] }

%%%

使用\usepackage[left=2.54cm, right=2.54cm, top=2.54cm]{geometry} \usepackage[english]{babel} %%% 'french', 'german', 'spanish', 'danish', etc. \usepackage{amssymb} \usepackage{txfonts} \usepackage{mathdots} \usepackage{pifont} \usepackage{wasysym} \usepackage{amssymb} \usepackage{tabularx,pbox} 格式化字符串时,您可以通过将其转义为%来编写实际 %,因此%%被解释为一个实际 %%%后跟另一个用作占位符的%,其中%被解释为(无法识别的)格式字符。

只需将"'"替换为偶数%%%,例如%如果您希望在生成的Latex代码中只有3 %%%%%%,那么任何其他偶数代码都可以使用。