在.txt文件中用数字字符串替换另一个数字

时间:2019-03-06 21:32:01

标签: python python-3.x

我的.txt有很多数字,分为两行,但是它们是以巴西的方式编写的(这意味着数字3.41被写为3,41)...我知道如何读取每个collum,我只需要将.txt中的每个逗号都更改为一个点,但是我不知道该怎么做... 我想了三种解决方法:

将每个逗号更改为一个点并覆盖之前的.txt,

用另一个名称写另一个.txt,但是每个逗号都变成一个点,

从txt导入每个字符串(应为浮点),并使用replace将“,”更改为“。”。

如果您可以通过前两种方法中的一种来帮助我会更好,尤其是第一种方法

(我只是导入了numpy,还不知道如何使用其他库,所以如果您能帮我提供代码和食谱,我将非常感谢)(对不起英语不好,很抱歉)

3 个答案:

答案 0 :(得分:1)

将问题标记为python时,这是使用sed cmdline实用程序的一种超简单的非Python方式。

这将用文本文件中的点(,)替换所有逗号(.),并覆盖原始文件:

sed -e 's/,/./g' -i yourtext.txt

或者,如果要将输出保存在其他文件中:

sed -e 's/,/./g' yourtext.txt > newfile.txt

答案 1 :(得分:1)

尝试一下:

with open('input.txt') as input_f, open('output.txt', 'w') as output_f:
    for line in input_f.readlines():
        output_f.write(line.replace(',', '.'))

用于 input.txt

  

1,2,3,4,5

     

10,20,30,40

输出为:

  

1.2.3.4.5

     

10.20.30.40。

答案 2 :(得分:0)

umlaute的答案很好,但是如果您坚持要在Python中执行此操作,则可以使用fileinput,它支持就地替换:

import fileinput

with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
    for line in file:
        line.replace(',', '~').replace('.', ',').replace('~', '.')

此示例假定您的示例中已经有。和,因此在固定两个字符时都将波浪号用作临时字符。如果您的数据中包含〜,请随时将其换成另一个不常见的字符。

如果使用的是csv,请注意不要替换列分隔符。在这种情况下,您可能要使用regex replace来确保每个逗号都被数字包围:r'\d,\d'