【发布时间】:2017-12-13 15:19:42
【问题描述】:
我正在使用一个小函数来循环文件,以便将任何连字符 - 替换为破折号 – (alt + 0150)。
我使用的函数为相关问题的解决方案添加了一些正则表达式风格 (how to replace a character INSIDE the text content of many files automatically?)
def mychanger(fileName):
with open(fileName,'r') as file:
str = file.read()
str = str.decode("utf-8")
str = re.sub(r"[^{]{1,4}(-)","–", str).encode("utf-8")
with open(fileName,'wb') as file:
file.write(str)
我使用了正则表达式[^{]{1,4}(-),因为搜索实际上是在乳胶回归表上执行的,我只想替换出现在数字周围的连字符。
明确一点:如果我们有真正的乳胶代码,例如\cmidrule(lr){2-4},我想替换所有连字符EXCEPT。
在这种情况下,
{靠近(最多 3-4 个字符)到hyphen及其左侧。当然,这个连字符不应该变成破折号,否则乳胶代码会中断。我认为排除的左侧部分条件对于在正则表达式中编写正确的异常很重要。实际上,在回归表中,您可以使用
-0.062\sym{***}(即连字符最右边的{)之类的内容,在这种情况下 我确实希望 替换连字符。
我表中的典型行是
variable & -2.061\sym{***}& 4.032\sym{**} & 1.236 \\
& (-2.32) & (-2.02) & (-0.14)
但是,我的正则表达式似乎不正确。例如,(-1.2) 将被替换为 –1.2,去掉括号。
这里有什么问题? 谢谢!
【问题讨论】:
-
请向我们展示您不希望发生替换的所有实例。
-
您能否提供您的数据样本以及它未能匹配/错误匹配的地方?
-
您好,谢谢! @TimBiegeleisen @zwer 只能想到像
\cmidrule(lr){2-8}这样的情况,其中有一个{靠近连字符和它的左侧。实际上,在回归表中,您可以使用-0.062\sym{***} -
@Noobie 我在下面尝试了一个答案。一点也不干净,但让我们看看我们是否可以对此进行迭代,直到我们得到解决您实际问题的东西。