在python脚本中拥有漂亮的打印选项

2024-03-28 16:38:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我将非常庞大的XML结构输出到文件中,我希望用户能够启用/禁用pretty print。在

我正在处理大约150MB的数据,当我尝试xml.etree.ElementTree并从它的元素对象构建树结构时,它占用了大量的内存,所以我通过存储原始字符串并通过.write()输出来手动完成这项工作。我的输出序列如下所示:

ofile.write(pretty_print(u'\
\t\t<LexicalEntry id="%s">\n\
\t\t\t<feat att="languageCode" val="cz"/>\n\
\t\t\t<Lemma>\n\
\t\t\t\t<FormRepresentation>\n\
\t\t\t\t\t<feat att="writtenForm" val="%s"/>\n\
\t\t\t\t</FormRepresentation>\n\
\t\t\t</Lemma>\n\
\t\t\t<Sense>%s\n' % (str(lex_id), word['word'], '' if word['pos']=='' else '\n\t\t\t\t<feat att="partOfSpeech" val="%s"/>' % word['pos'])))

.write()中,我调用我的函数pretty_print,根据命令行选项,该函数应该去掉所有制表符和换行符

^{pr2}$

我写了'should',因为它没有,在这个特殊的例子中,它没有删除任何字符。在

但在这种情况下,它工作得很好:

for ss in word['synsets']:
    ofile.write(pretty_print(u'\t\t\t\t<Sense synset="%s-synset"/>\n' % ss))

我想到的第一件事是替换可能有一些问题,但是当我在pretty_print函数中打印传递的字符串时,它看起来非常好。在

有什么建议可能导致.strip()不起作用?
或者如果有更好的方法,我会接受任何建议


Tags: 函数字符串posidprettyvalattword
1条回答
网友
1楼 · 发布于 2024-03-28 16:38:14

您的问题是str.strip()只从字符串的开头和结尾删除。在

您要么希望str.replace()删除所有实例,要么将其拆分成行并剥离每一行(如果您想从行的开始和结尾删除它们)。在

还要注意,对于您的大型字符串,Python支持带有三个引号的多行字符串,这将使键入更加容易,并且带有%的旧样式字符串格式已被str.format()取代,您可能希望在新代码中使用它。在

相关问题 更多 >