在Python中快速导入文本文件的方法是什么?
我有一个普通的文本文件,里面是一串数字,每行一个。我需要把这些数字导入到一个列表里。我现在正在学习Python,不太确定有什么快速或者“标准”的方法来做到这一点(另外,我之前用R,所以习惯了用scan
或readLines
函数,这样做起来非常简单)。
这个文件的内容是这样的(注意:这不是一个csv文件,逗号是小数点):
204,00
10,00
10,00
10,00
10,00
11,00
70,00
276,00
58,00
...
因为它用逗号代替了小数点,所以我想这个任务可能会有点难,但应该大致上还是差不多,对吧?
这是我现在的解决方案,我觉得有点麻烦:
f = open("some_file", "r")
data = f.read().replace('\n', '|')
data = data[0:(len(data) - 2)].replace(',', '.')
data = data.split('|')
x = range(len(data))
for i in range(len(data)):
x[i] = float(data[i])
提前谢谢你们。
3 个回答
0
如果想要更简单的方法,你可以这样做:
Read = []
with open('File.txt', 'r') as File:
Read = File.readLines()
for A in Read:
print A
这里的“with open()”会打开文件,并在读完后自动关闭。这种做法是比较好的,没记错的话。
接着,For循环会逐行读取文件内容并打印出来。
1
bsoist的回答如果地区设置正确的话是很不错的。如果没有正确设置,你可以简单地把整个文件读进来,然后根据换行符(\n
)进行分割,接着用列表推导式来进行替换。
with open('some_file.txt', 'r') as datafile:
data = datafile.read()
x = [float(value.replace(",", ".")) for value in data.split('\n')]
1
更新
我之前没注意到逗号是小数点的分隔符。如果地区设置正确,像这样的代码应该可以正常工作。
lines = [locale.atof(line.strip()) for line in open(filename)]
如果不行,你可以试试下面的代码。
lines = [float(line.strip().replace(',','.')) for line in open(filename)]
lines = [line.strip() for line in open(filename)]
如果你想把数据当作数字来处理……
lines = [map(float,line.strip().split(',')) for line in open(filename)]
- 根据下面前两个评论进行了修改