【发布时间】:2015-11-09 10:28:24
【问题描述】:
我有一个字符串(Python 2.7.3),它在 Django 中呈现为模板,但我认为这不是 Django 特有的。该字符串来自 docx 文件中的 document.xml 文件。我正在提取文档 xml 渲染它并将其放回 docx 中以获取一些简单的邮件合并类型的东西。
除了我可以使用的模板标签的明显限制之外,还有一个问题是,如果您在 Word 中编辑文本,Word 喜欢放入一大堆 xml。
为了我的需要,如果可以,我会成功
- 在双花括号之间查找所有出现的
"并替换为引号"。
我想将" 替换为",如下所示:
word_docxml = 'some text here {{form.letterdate|date:"Y-m-d"}} and more text'
我正在阅读这些:
但无法将它们组合在一起。
-
如何删除/剥离内部的所有内容,包括
{{ }}之间的< >,如下所示:<w:rPr> <w:rFonts w:eastAsia="Times New Roman" w:cs="Arial" w:ascii="Arial" w:hAnsi="Arial"/> <w:color w:val="00000A"/> <w:sz w:val="22"/> <w:szCs w:val="22"/> <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA"/> </w:rPr> <w:t>{{form.</w:t>undefined</w:r>undefined<w:r> <w:rPr> <w:rFonts w:eastAsia="Times New Roman" w:cs="Arial" w:ascii="Arial" w:hAnsi="Arial"/> <w:b w:val="false"/> <w:bCs w:val="false"/> <w:color w:val="00000A"/> <w:sz w:val="22"/> <w:szCs w:val="22"/> <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA"/> </w:rPr> <w:t>L</w:t>undefined</w:r>undefined<w:r> <w:rPr> <w:rFonts w:eastAsia="Times New Roman" w:cs="Arial" w:ascii="Arial" w:hAnsi="Arial"/> <w:color w:val="00000A"/> <w:sz w:val="22"/> <w:szCs w:val="22"/> <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA"/> </w:rPr> <w:t>etterDate.value|date:"Y-m-d"}}</w:t>undefined</w:r>
这将导致以下结果(抱歉,我似乎无法突出显示感兴趣的领域):
<w:rPr>
<w:rFonts w:eastAsia="Times New Roman" w:cs="Arial" w:ascii="Arial" w:hAnsi="Arial"/>
<w:color w:val="00000A"/>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
<w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA"/>
</w:rPr>
<w:t>{{form.LetterDate.value|date:"Y-m-d"}}</w:t>undefined</w:r>
如何处理这个问题?正则表达式是要走的路吗?如果是这样,如何将命令放在一起?
这不是 Between double curly braces: replace particular text 的重复,因为它没有提到处理搜索范围的开始和结束的双花括号(这是我真正的问题,我已经阅读了许多示例并且无法获得替换的模式格式正确)。另一篇文章是关于在 XHTML 中解析 html 实体的子集;我的帖子中不需要、提到或质疑 XHTML 解析。此处的这篇文章询问如何删除和/或替换其他两个已知开始/结束模式之间的重复模式。我提供了一个简短的背景,两个从简单到复杂的具体例子,希望学习如何完成我目前的任务——我最大的希望是解释 A 部分并将该方法自己应用到 B 部分。我得到了聪明的讨论和超级回复来自社区的乐于助人的成员。我的帖子根本不涉及 HTML,因为我在 Django 中呈现的模板被添加回 docx 存档并保存到文件存储中。它不是重复的(无论如何标记的重复)。
【问题讨论】:
-
re.sub('\&quot', '\"', s) -
问题与什么重复?问题是要替换大括号之间的特定内容,并且除了作为模板语言的一部分之外与 HTML 无关。如果作者有 1000 个这样的文件并且需要对其进行整理,为什么不适合用解决方案来回答这个问题?只是把那个帖子扔了,不管它多么有趣,都不是正确的!给我看这篇文章的任何部分,甚至提到除了 cmets 之外的 HTML。
-
@melwil 我同意 melwil。我们有句话说,射蚊子不需要大象枪。使用工具箱中最简单的工具解决问题。 Html 解析器并不太难使用,但我确定有一些必要的牦牛剃须比较来启动一个充分解决问题的正则表达式,并且可以在任何开箱即用的语言。不要用大象霰弹枪来解决这个简单的问题,如果你已经掌握了正则表达式或者当然想要改进。
-
“他们”删除了重复的状态? Stackoverlfow 的胜利!,太棒了 :)
-
即使在我的旗帜被宣布为“没有帮助”之后!我已经放弃了,但我想有人终于看到了原因。无论如何,没有办法用 HTML 解析器解决这个问题,它不是 HTML。 :p
标签: python regex django python-2.7