Python读取.txt文件 - >名单

时间:2016-06-22 19:29:09

标签: python list file python-3.x readfile

我有一个.txt文件,我想获取列表中的值。 txt文件的格式应为:

value0,timestamp0
value1,timestamp1
...
...
...

最后我想得到一个带

的列表
[[value0,timestamp0],[value1,timestamp1],.....]

我知道通过

获取这些值很容易
direction = []
for line in open(filename):
    direction,t = line.strip().split(',')
    direction = float(direction)
    t = long(t)
    direction.append([direction,t])
return  direction

但是我有一个大问题:创建数据时我忘了在每行中插入一个“\ n”。

这就是为什么我有这种格式:

value0, timestamp0value1,timestamp1value2,timestamp2value3.....

每个时间戳都有13个字符。

有没有办法按需要将这些数据放入列表中?将非常多的工作再次获取数据。

由于 最大

4 个答案:

答案 0 :(得分:1)

您必须删除最后一个,但您可以在逗号后面的每13个字符后插入一个逗号:

import re
s = "-0.1351197,1466615025472-0.25672746,1466615025501-0.3661744,1466615025531-0.4646‌​7665,1466615025561-0.5533287,1466615025591-0.63311553,1466615025621-0.7049236,146‌​6615025652-0.7695509,1466615025681-1.7158673,1466615025711-1.6896278,146661502574‌​1-1.65375,1466615025772-1.6092329,1466615025801"

print(re.sub("(?<=,)(.{13})",r"\1"+",", s))

哪个会给你:

-0.1351197,1466615025472,-0.25672746,1466615025501,-0.3661744,1466615025531,-0.4646‌​7665,1466615025561,-0.5533287,1466615025591,-0.63311553,1466615025621,-0.7049236,146‌​6615025652-0.7695509,1466615025681,-1.7158673,1466615025711,-1.6896278,146661502574‌​1-1.65375,1466615025772,-1.6092329,1466615025801, 

答案 1 :(得分:1)

import re
input = "value0,0123456789012value1,0123456789012value2,0123456789012value3"

for (line, value, timestamp) in re.findall("(([^,]+),(.{13}))", input):
    print value, timestamp

答案 2 :(得分:0)

我用你的例子编写了一个快速编码,而不是使用13而是len(“timestamp”)所以你可以适应

instr = "value,timestampvalue2,timestampvalue3,timestampvalue4,timestamp"

previous_i = 0
for i,c in enumerate(instr):
    if c==",":
        next_i = i+len("timestamp")+1
        print(instr[previous_i:next_i])
        previous_i = next_i

输出被解扰:

value,timestamp
value2,timestamp
value3,timestamp
value4,timestamp

答案 3 :(得分:0)

我认为你可以这样做:

direction = []
for line in open(filename):
    list = line.split(',')
    v = list[0]
    for s in list[1:]:
        t = s[:13]
        direction.append([float(v), long(t)])
        v = s[13:]

如果你正在使用python 3.X,则long函数不再存在 - 使用int。