如何在python中替换单词

时间:2019-01-30 09:36:09

标签: python string replace

这是我在这里的第一篇文章。请原谅任何无知。在此网站上曾问过类似的问题,但这不是重复的。

我有这个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.

这是没有意义的。我只希望替换第一个美元符号。我试图思考,但被困住了。

2 个答案:

答案 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$.