2015-11-09 3 views
-2

Я хотел бы разобрать каждую строку текстового файла, каждый из которых выглядят примерно так:Преобразование текстового файла в список

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

Можете ли вы показать код, который у вас есть для этого? Просьба указать, какие области вам затрудняют. – idjaw

+0

Кроме того, ваша сюжетная линия немного запутанна. Вы говорите словарь (это означает python 'dict'?), Но вы показываете два списка. Дайте нам код, а затем мы можем продолжить. – tdelaney

+0

Код, который что-то делает? @idjaw –

ответ

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() 
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'] 
>>> 
+0

Вы можете сделать небольшую оптимизацию в своем коде, выполнив только« split ». –

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, как это имеет смысл иметь названия городов, как ключ и имя государства в качестве значения.

Смежные вопросы