Python 读取 .txt 文件 -> 列表

Python read .txt File -> list

我有一个 .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 个字符。

有没有办法把这些数据按照我的意愿放到一个列表中?再次获取数据将是一项非常艰巨的工作。

谢谢 最大值

我用你的例子编写了一个快速代码,而不是使用 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

您必须删除最后一个 , 但您可以在逗号后每 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""+",", 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, 
import re
input = "value0,0123456789012value1,0123456789012value2,0123456789012value3"

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

我想你可以这样做:

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。