我想解析一个文本文件的每一行,每个文本文件都与此类似:
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())
答案 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
,因为将城市名称作为键,将州名称作为值更有意义。