用文件中的特殊字符替换小数

时间:2019-06-27 16:36:12

标签: python regex

我目前正在尝试读入文件,并替换仅位于其中的刺字符之间的所有小数,从而: 即。

þ219.91þ
þ122.1919þ
þ467.426þ
þ104.351þ
þ104.0443þ

将成为

þ219þ
þ122þ
þ467þ
þ104þ
þ104þ

我要复制的东西的要点在Notepad ++中起作用(正则表达式替换为-在下面),并在python中复制它(下面的代码不起作用)。有什么建议吗?

在记事本++中:

Find: (\xFE\d+)\.\d+(\xFE)
Replace: $1$2

Python:

for line in file:
        line = re.sub("(\xFE\d+)\.\d+(\xFE)", "\xFE\d+\xFE", line)

3 个答案:

答案 0 :(得分:1)

我认为没有必要安装\ xFE,这可能很简单:

import re

regex = r"(þ\d+)\.\d+(þ)"

test_str = ("þ219.91þ\n"
    "þ122.1919þ\n"
    "þ467.426þ\n"
    "þ104.351þ\n"
    "þ104.0443þ")

subst = "\\1\\2"

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

if result:
    print (result)

答案 1 :(得分:1)

您不替换小数:您要舍弃这些值。数学治疗对您有帮助吗?假设所有行都是您显示的格式。

for line in file:
    _, val, _ = line.split('þ')   # null string, value, null string
    line = 'þ' + str(int(val))+ 'þ'

请注意,您可以在循环中用单行代码将其减少一点:

    line = 'þ' + str(int(line.split('þ')[1]))+ 'þ'

答案 2 :(得分:1)

您可以使用单线,例如:

f = ["þ219.91þ", "þ122.1919þ", "þ467.426þ", "þ104.351þ", "þ104.0443þ"]

print(["þ{}þ".format(int(float(l.strip("þ")))) for l in f])

结果

['þ219þ', 'þ122þ', 'þ467þ', 'þ104þ', 'þ104þ']