在tex中的特定位置插入字符串

2024-04-16 17:06:21 发布

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

我需要把一些文本转换成Latex格式。你知道吗

123 {\i1}e11 e22{\i0} asa ds dawdas a as<asd a<asd <ads sasdasdasd

我的目标是将{\i1}和{\i0}之间的所有内容放在$和$之间,并在每个单词之间添加一个“\”。你知道吗

预期结果:

123 $e11 \ e22 $ asa ds dawdas a as<asd a<asd <ads sasdasdasd

或者(也可以)

123 $e11 \ e22 \ $ asa ds dawdas a as<asd a<asd <ads sasdasdasd

我尝试过:

text = '123 {\i1}e11 e22{\i0} asa ds dawdas a as<asd a<asd <ads sasdasdasd'
a = re.sub(r'{\\i1}(.*?){\\i0}', r' $\1$', text)

123 $e11 e22$ asa ds dawdas a as

…但是我怎么才能把这些“\”放在中间呢?


Tags: text文本as格式dslatexadsasd
1条回答
网友
1楼 · 发布于 2024-04-16 17:06:21

你可以用

import re
text = '123 {\i1}e11 e22{\i0} asa ds dawdas a as<asd a<asd <ads sasdasdasd'
rx = r'{\\i1}(.*?){\\i0}'
a = re.sub(rx, lambda x: r' ${} $'.format(r" \ ".join(x.group(1).split())), text)
print(a) # => 123  $e11 \ e22 $ asa ds dawdas a as<asd a<asd <ads sasdasdasd

参见Python demo online。你知道吗

这里,re.sub(rx, lambda x: r' ${} $'.format(r" \ ".join(x.group(1).split())), text)是对re.sub的调用,其中第二个参数是lambda表达式。匹配作为x传递到那里,x.group(1)是字符串替换模式中\1反向引用的“等价物”。它用空格分开,用空格+反斜杠+空格连接起来,两端的空格+美元序列一起插入到结果字符串中,而不是匹配值。你知道吗

相关问题 更多 >