2017-04-24 53 views
-2

我目前拥有的文本文件创建平行的列表(每行的值由制表符分隔):Python中,从文本文件

1935 32.1 
1940 30.5 
1945 24.4 
1950 23.0 
1955 19.1 
1960 15.6 
1965 12.4 
1970 9.7 
1975 8.9 
1980 7.2 

最终我想创建两个平行的列表这样的:

listX=[1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980] 
listY=[32.1, 30.5, 24.4, 23.0, 19.1, 15.6, 12.4, 9.7, 8.9, 7.2] 

无论出于何种原因,我在这一张上画空白。创建这些单独列表的最佳方式是什么?

+1

你试过了什么? – Fallenreaper

+1

可能有成千上万个类似的问题。至少,你应该尝试找到这样一个问题,并尝试这种方法,如果你不能得到它的工作,然后问一个问题,*突出了你的尝试没有奏效*。他们关键的问题就是描述你所尝试过的以及它的失败。这不是一个代码写入服务。 –

回答

0

如果你的罚款与X和Y元组,你可以使用zip

import io 
with io.open('file.txt', encoding='utf-8') as f: 
    x, y = zip(* (l.split() for l in line)) 

如果它必须是列表,要么转换的元组列表:

with io.open('file.txt', encoding='utf-8') as f: 
    x, y = map(list(zip(* (l.split() for l in line)))) 

或手工采摘的值:

with io.open('file.txt', encoding='utf-8') as f: 
    values = [l.split() for l in line] 
x = [v[0] for v in values] 
y = [v[1] for v in values] 
0
data = open('file.txt').readlines() 

listX = [d.split('\t')[0] for d in data] 
listY = [d.split('\t')[1] for d in data] 
0
fo = open("foo.txt", "r+") 
str = fo.read() 
# If you have a new line character at the end 
str = str[:len(str)-1] 
a = str.split('\n') 
b = [] 
d = [] 
for i in a: 
    x = i.split('\t') 
    b.append(x[0]) 
    d.append(x[1]) 

b和d将是您的必需列表。