我正在使用 Polars 從表中構建 XML,我想轉義 XML 字符。但是,當我嘗試這樣做時遇到了問題。我做的第一件事是嘗試以下操作:
import polars as pl
from xml.sax.saxutils import escape
table_raw = pl.read_sql("""SELECT * FROM mytable""", engine).lazy()
table = table_raw.select([
pl.concat_str([
pl.lit('''<wd:Overall_XML_Tag>''').alias('Overall_XML_header'),
pl
.when(pl.col('value') != None).then(pl.format('''<wd:Value_XML_Tag>{}</wd:Value_XML_Tag>''', escape(pl.col('value'))))
.otherwise('')
.alias('value'),
pl.lit('''</wd:Overall_XML_Tag>''')
])
])
但是,這樣做時,我在“'Expr'物件沒有屬性'replace'”的轉義呼叫中遇到錯誤
我能夠通過保留字符的 .replace() 來完成以下作業,但它很麻煩而且很麻煩,所以希望有更好的方法來處理事情。
import polars as pl
from xml.sax.saxutils import escape
table_raw = pl.read_sql("""SELECT * FROM mytable""", engine).lazy()
table = table_raw.select([
pl.concat_str([
pl.lit('''<wd:Overall_XML_Tag>''').alias('Overall_XML_header'),
pl
.when(pl.col('value') != None).then(pl.format('''<wd:Value_XML_Tag>{}</wd:Value_XML_Tag>''', pl.col('value').str.replace('&', '&').str.replace('<', '<').str.replace('>', '>').str.replace("\"", """).str.replace("'", "'"))))
.otherwise('')
.alias('value'),
pl.lit('''</wd:Overall_XML_Tag>''')
])
])
有人有更好的方法來處理這個問題嗎?
uj5u.com熱心網友回復:
想出了一個辦法來處理這個。您可以使用如下自定義函式:
import polars as pl
from xml.sax.saxutils import escape
table_raw = pl.read_sql("""SELECT * FROM mytable""", engine).lazy()
table = table_raw.select([
pl.concat_str([
pl.lit('''<wd:Overall_XML_Tag>''').alias('Overall_XML_header'),
pl
.when(pl.col('value') != None).then(pl.format('''<wd:Value_XML_Tag>{}</wd:Value_XML_Tag>''', pl.col('value').apply(lambda x: escape(x))))
.otherwise('')
.alias('value'),
pl.lit('''</wd:Overall_XML_Tag>''')
])
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536425.html
下一篇:在JS中動態創建SVG路徑
