Как заменить слова в питоне - PullRequest
0 голосов
/ 30 января 2019

Это мой первый пост здесь.Простите за любое невежество.Аналогичный вопрос задавался на этом сайте, но это не дубликат.

У меня есть этот текстовый файл.Некоторым из вас может быть известно, что wordpress.com поддерживает латекс, но для этого нужно написать сообщение следующим образом:

$ latex your-latex-code-here $

Я использую на оборотенаписать код.Теперь у меня есть текстовый файл, но замена каждого $ на $ latex очень утомительна.Так что я думал об использовании Python, чтобы сделать грязную работу для меня.

Я знаю, как работает функция замены. Как искать и заменять текст в файле с помощью 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 голосов
/ 30 января 2019

Попробуйте использовать это регулярное выражение в своем коде:

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)

Нет необходимости разбивать / объединять исходную строку (что испортит латексный текст!), И результат будет выглядеть следующим образом:

'Let $latex x$ be a real number. Then we define square of $latex x$ as $latex x^2$.'
0 голосов
/ 30 января 2019

Вы можете сделать это, разделив исходную строку и заменив только первый экземпляр $ в каждом слове.

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$.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...