2011-05-09 11 views
6

Digamos que tengo un archivo de texto con el siguiente:Python - la conversión de contenidos los archivos de texto en el diccionario de valores/claves fácilmente

line = "this is line 1" 
line2 = "this is the second line" 
line3 = "here is another line" 
line4 = "yet another line!" 

Y quiero convertir rápidamente estos en el diccionario de claves/valores con "línea *" estar la clave y el texto entre comillas como el valor mientras también quita el signo igual.

¿Cuál sería la mejor manera de hacer esto en Python?

+2

¿Por qué quiere como una diccionario, en lugar de utilizar uno de los muchos analizadores de archivos de configuración que ya lo entenderían? –

+1

cuales son esos? – knutole

Respuesta

15
f = open(filepath, 'r') 
answer = {} 
for line in f: 
    k, v = line.strip().split('=') 
    answer[k.strip()] = v.strip() 

f.close() 

Esperanza esto ayuda

+0

Esto funcionó gracias! – jim

4

En una línea:

d = dict((line.strip().split(' = ') for line in file(filename))) 
+0

Traceback (última llamada más reciente): Archivo "", línea 1, en d = dict ((line.strip(). Split ('=') para línea en archivo ('F: \ lines.txt '))) TypeError: el objeto' dict 'no se puede llamar – jim

+0

@jim, ¿qué versión de Python? –

+0

Para Python 3, creo que debes usar: d = {line.strip(). Split ('=') para la línea en el archivo (nombre de archivo)}, pero no tengo Python 3, por lo que no puedo Pruébalo. –

0

Esto es lo que la versión urlopen de la respuesta de inspectorG4dget podría ser:

from urllib.request import urlopen 
url = 'https://raw.githubusercontent.com/sedeh/github.io/master/resources/states.txt' 
response = urlopen(url) 
lines = response.readlines() 
state_names_dict = {} 
for line in lines: 
    state_code, state_name = line.decode().split(":") 
    state_names_dict[state_code.strip()] = state_name.strip() 
Cuestiones relacionadas