2014-04-06 10 views
6

So habe ich eine Textdatei, die so etwas wie ist:Wie entferne ich n aus meinem Python-Wörterbuch?

apples,green 
tomatos,red 
bananas,yellow 

und meinen Code dies als ein Wörterbuch

def load_list(filename): 
    with open(filename, "rU") as my_file: 
     my_list = {} 
     for line in my_file: 
      x = line.split(",") 
      key = x[0] 
      value = x[1] 
      my_list[key] = value 
     print my_list 

, die außer funktioniert gut zu bedienen ist, dass jeder Wert hat \ n hinzugefügt das Ende davon, wegen des Zeilenumbruchs. Ich versuchte

.strip() 

zum x-Attribute hinzufügen, aber es reulsted in einem Attribut-Fehlern (Attribute: ‚dict‘ Objekt hat kein Attribut ‚Streifen‘).

Also wie entferne ich das \ n?

Antwort

9

Sie sollten strip vor der Spaltung, wie diese

x = line.rstrip("\n").split(",") 

wir str.rstrip hier verwenden, da wir nur die Zeilenumbrüche am Ende der Leitung beseitigen müssen.

Auch können Sie die Schlüssel und Werte sofort auspacken, wie diese

key, value = line.rstrip("\n").split(",") 
0

Hier ist ein vollständiges Beispiel zeigt, wie der Streifen im Allgemeinen verwendet werden können:

def main(): 
# Open a file named football.txt. 
infile = open('football.txt', 'r') 

# Read three lines from the file. 
line1 = infile.readline() 
line2 = infile.readline() 
line3 = infile.readline() 

Strip the \n from each string. 
line1 = line1.rstrip('\n') 
line2 = line2.rstrip('\n') 
line3 = line3.rstrip('\n') 

# Close the file. 
infile.close() 

# Print the data that was read into memory. 
print(line1) 
print(line2) 
print(line3) 

# Call the main function. 
main() 

ist, dass Sie Lassen Sie sagen, wollte Dinge in eine Liste einlesen und die Newline abziehen. Sie könnten wie folgt vorgehen:

# This program reads a file's contents into a list. 

def main(): 
# Open a file for reading. 
infile = open('football.txt', 'r') 

# Read the contents of the file into a list. 
football = infile.readlines() 

# Close the file. 
infile.close() 

# Strip the \n from each element. 
index = 0 
while index < len(football): 
football[index] = football[index].rstrip('\n') 
index += 1 

# Print the contents of the list. 
print(football) 

# Call the main function. 
main() 

Diese zweite Programmversion die Liste für ein Wörterbuch mit nur wenigen sehr geringfügigen Änderungen leicht ersetzen könnte.

0

By the way, ist dies eines der Probleme, die Sie vermeiden, wenn Sie die csv module verwenden, da es die Linien für Sie Streifen wird:

import csv 

def load_list(filename): 
    with open(filename, 'r') as f: 
     reader = csv.reader(f, delimiter=',') 
     my_dict = {k:v for k,v in reader} 
    return my_dict 

ich auch den Namen der Variable my_dict geändert seit Es ist keine Liste.

Verwandte Themen