我的.txt有很多数字,分为两行,但是它们是以巴西的方式编写的(这意味着数字3.41被写为3,41)...我知道如何读取每个collum,我只需要将.txt中的每个逗号都更改为一个点,但是我不知道该怎么做... 我想了三种解决方法:
将每个逗号更改为一个点并覆盖之前的.txt,
用另一个名称写另一个.txt,但是每个逗号都变成一个点,
从txt导入每个字符串(应为浮点),并使用replace将“,”更改为“。”。
如果您可以通过前两种方法中的一种来帮助我会更好,尤其是第一种方法
(我只是导入了numpy,还不知道如何使用其他库,所以如果您能帮我提供代码和食谱,我将非常感谢)(对不起英语不好,很抱歉)
答案 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'