我目前正在尝试读入文件,并替换仅位于其中的刺字符之间的所有小数,从而: 即。
þ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)
答案 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þ']