在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2258字,纯文字阅读大概需要4分钟。
内容图文
![在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器](/upload/InfoBanner/zyjiaocheng/684/c98535e7c0684862b9d70a9673faeec1.jpg)
我有一个字符串w,并且我想用“< sub>”替换“ $_”以及“ $_”后的第一个“ $”和“< / sub>”.我需要将“ $^”替换为“< sup>”以及后面带有“< / sup>”的“ $”.我尝试了w.replace(“ $_”,“< sub>”)和w.replace(“ $”,“< / sub>”),但是我不能只获得“ $_”将替换为“< / sub>”,之后仅是每个“ $”.将“ $^”替换为“< sup>”的步骤相同.如何仅在“ $_”或“ $^”指示符更改之后直接调用“ $”而不更改其余部分?
Python代码:
w = ["Li$_3$O$^cat$", "Al$_2$O$_3$", "ZnO", "H$_2$O+O$^3$"]
w = str(w)
if '$_' in w:
w = w.replace("$_", "<sub>")
w = w.replace("$", "</sub>")
if '$^' in w:
w = w.replace("$^","<sup>")
w = w.replace("$","</sup>")
print w
所需的输出:
['Li< sub >3< /sub >O< sup >cat< /sup >',
'Al< sub >2< /sub >O< sub >3< /sub >',
'ZnO',
'H< sub >2< /sub >O+O< sup >3< /sup >']
解决方法:
如果要替换所有(非重叠)实例,则可以执行以下操作:
import re
re.sub(r'\$_([^$]*)\$', r'<sub>\1</sub>', w)
这将用< sub>(除$之外的所有东西)/ sub找到$_(除$之外的所有东西)的每个实例.
这意味着,如果您有类似Li $_3 $O $^ cat $的东西,它将被转换为Li 3-/ sub O $^ cat $.
如果然后还要将$^ … $转换为< sup> …< / sup> ;,则可以应用类似的策略.下面是填充变量结果的完整示例:
import re
w = ["Li$_3$O$^cat$", "Al$_2$O$_3$", "ZnO", "H$_2$O+O$^3$"]
w = str(w)
result = re.sub(r'\$_([^$]*)\$', r'<sub>\1</sub>', w)
result = re.sub(r'\$\^([^$]*)\$', r'<sup>\1</sup>', result)
print result
最终输出为:
['Li<sub>3</sub>O<sup>cat</sup>', 'Al<sub>2</sub>O<sub>3</sub>', 'ZnO', 'H<sub>2</sub>O+O<sup>3</sup>']
就是说,如果需要完成的全部替换操作比这更复杂,那么您可能希望将替换规则存储在某种数据结构中.例如:
import re
def substitute(rules, input):
"""Return a string with substitution performed on given input
rules -- dict specifying the substitution rules
input -- input string to be substituted
"""
result = input
for k, v in rules.iteritems():
re_str = r'\$' + re.escape(k) + r'([^$]*)\$'
sub_str = r'<%s>\1</%s>' % (v, v)
result = re.sub(re_str, sub_str, result)
return result
rules = {
'_': 'sub',
'^': 'sup'
}
w = ["Li$_3$O$^cat$", "Al$_2$O$_3$", "ZnO", "H$_2$O+O$^3$"]
print substitute(rules, str(w))
输出:
['Li<sub>3</sub>O<sup>cat</sup>', 'Al<sub>2</sub>O<sub>3</sub>', 'ZnO', 'H<sub>2</sub>O+O<sup>3</sup>']
请注意,上述解决方案不处理嵌套替换.可以使用更高级的正则表达式功能(例如negative lookahead或full parsers)来处理这些(如果需要).
内容总结
以上是互联网集市为您收集整理的在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器全部内容,希望文章能够帮你解决在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。