这是我在这里的第一篇文章。请原谅任何无知。在此网站上曾问过类似的问题,但这不是重复的。
我有这个tex文件。你们中的某些人可能知道wordpress.com支持乳胶,但为此必须以以下方式撰写帖子:
$ latex your-latex-code-here $
我用背面写代码。现在我手头有一个tex文件,但是用$ latex替换每个$非常繁琐。所以我当时在考虑使用python为我完成肮脏的工作。
我知道替换功能的工作原理。How to search and replace text in a file using Python?
import fileinput
with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
for line in file:
print(line.replace(text_to_search, replacement_text), end='')
或
# Read in the file
with open('file.txt', 'r') as file :
filedata = file.read()
# Replace the target string
filedata = filedata.replace('ram', 'abcd')
# Write the file out again
with open('file.txt', 'w') as file:
file.write(filedata)
但是问题在于它将替换两个$符号。例如,如果我有这样的事情:
Let $x$ be a real number. Then we define square of $x$ as $x^2$.
如果我运行此代码,它将以以下形式返回输出:
Let $latex x$latex be a real number. Then we define square of $latex x$latex as $latex x^2$latex.
这是没有意义的。我只希望替换第一个美元符号。我试图思考,但被困住了。
答案 0 :(得分:3)
尝试在您的代码中使用此正则表达式:
import re
s = 'Let $x$ be a real number. Then we define square of $x$ as $x^2$.'
re.sub(r'\$(.+?)\$', r'$latex \1$', s)
无需拆分/连接原始字符串(这会使Latex文本混乱!),结果将如下所示:
'Let $latex x$ be a real number. Then we define square of $latex x$ as $latex x^2$.'
答案 1 :(得分:1)
您可以通过拆分原始字符串并仅替换每个单词中$
的第一个实例来实现此目的。
s = "Let $x$ be a real number. Then we define square of $x$ as $x^2$."
r = [i.replace("$", "$latex ", 1) for i in s.split()]
print(" ".join(r))
# Let $latex x$ be a real number. Then we define square of $latex x$ as $latex x^2$.