什么是在python中导入文本文件的快速方法?

时间:2014-04-23 14:17:50

标签: python python-2.7

我有一个带有一系列数字的纯文本文件,每行一个。我需要将这些值导入列表。我目前正在学习python,我不确定这是一种快速甚至是“标准”的方式(同样,我来自R所以我已经习惯了scan或{{1}使这项任务变得轻而易举的功能)。

文件看起来像这样(注意:这不是csv文件,逗号是小数点):

readLines

因为它使用逗号而不是'。'对于小数点,我猜任务有点难,但它应该或多或少相同,对吧?

这是我目前的解决方案,我觉得这很麻烦:

204,00
10,00
10,00
10,00
10,00
11,00
70,00
276,00
58,00
...

提前致谢。

3 个答案:

答案 0 :(得分: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)]
  • 根据以下前两条评论进行编辑

答案 1 :(得分:1)

如果正确设置了区域设置,

bsoist's answer会很好。如果没有,您只需读取整个文件并在换行符(\n)上拆分,然后使用列表推导进行替换。

with open('some_file.txt', 'r') as datafile:
    data = datafile.read()

x = [float(value.replace(",", ".")) for value in data.split('\n')]

答案 2 :(得分:0)

更简单的方法就是

Read = []
with open('File.txt', 'r') as File:
    Read = File.readLines()

for A in Read:
    print A

&#34; with open()&#34;将打开文件并在完成阅读后退出。这是IIRC的良好做法。

然后For循环将循环遍历Read并打印出行。