我正在使用一个小函数来循环遍历文件,以便将任何连字符 -
替换为 en-dash –
(alt + 0150)。
我使用的函数为相关问题的解决方案 (如何自动替换多个文件中文本内容内的字符?) 添加了一些正则表达式的特性。
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}(-)
,因为实际上是在latex回归表中进行搜索,我只想替换数字周围出现的连字符。
明确一点:我想要替换除了真正的latex代码(如\cmidrule(lr){2-4}
)外的所有连字符。
在这种情况下,有一个
{
接近(在3-4个字符内)连字符左侧。当然,这个连字符不应该被改成en-dash,否则latex代码会出错。我认为排除条件的左部分很重要,以编写正确的正则表达式。实际上,在回归表中可以有像
-0.062\sym{***}
这样的东西(即在连字符紧右边的{
),在这种情况下我确实想替换连字符。
我的表格中的典型行是
variable & -2.061\sym{***}& 4.032\sym{**} & 1.236 \\
& (-2.32) & (-2.02) & (-0.14)
然而,我的正则表达式似乎不正确。例如,
(-1.2)
将被替换为 –1.2
,省略了括号。这里有什么问题呢? 谢谢!
\cmidrule(lr){2-8}
这样的情况,其中有一个{
靠近连字符并在其左侧。确实,在回归表中,您可以有像-0.062\sym{***}
这样的内容。 - ℕʘʘḆḽḘ