将文本文件转换为列表

时间:2015-11-09 03:40:43

标签: python list

我想解析一个文本文件的每一行,每个文本文件都与此类似:

New Mexico,Santa Fe
Alabama,Montgomery

我想解析每一行,以便我最终得到这个:

states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas']
cities = ['Montgomery', 'Juneau', 'Phoenix', 'Little Rock']

文本文件的内容已存储在函数f.read()中,并由以下内容定义:

#module imports
import sys
import random

fname = sys.argv[1]
with open(fname, 'r') as f:
    print(f.read())

3 个答案:

答案 0 :(得分:1)

这有用吗?

>>> with open('file') as f:
...     text = [i.strip() for i in f]
...     
... 
>>> text
['New Mexico,Santa Fe', 'Alabama,Montgomery']
>>> states = []
>>> cities = []
>>> for i in text:
...     states.append(i.split(',')[0])
...     cities.append(i.split(',')[1])
...     
... 
>>> states
['New Mexico', 'Alabama']
>>> cities
['Santa Fe', 'Montgomery']
>>> 

答案 1 :(得分:1)

您可以这样做:

import sys
states = []
cities = []
fname = sys.argv[1]
f = open(fname, 'r')
for line in f:
    line = line.rstrip() # This will remove all the whitespaces at the end of the line
    line = line.split(',')
    states.append(line[0])
    cities.append(line[1])

print states
print cities
f.close()

答案 2 :(得分:1)

首先将其转换为字典。然后一个列表是字典的keys,另一个列表是字典的values

在使用之前,请不要忘记查看sys.argv长度。

import sys

if len(sys.argv) < 2:
    print('must provide filename')
    exit()

with open(sys.argv[1], 'r') as f:
    d = dict(reversed(line.strip().split(',')) for line in f)

    cities = list(d.keys())
    states = list(d.values())

print('cities = %r' % cities)
print('states = %r' % states)

我添加了reversed,因为将城市名称作为键,将州名称作为值更有意义。

相关问题