Как удалить n из моего словаря python?

Итак, у меня есть текстовый файл, который выглядит примерно так:

apples,green
tomatos,red
bananas,yellow

и мой код для использования этого в качестве словаря -

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

который отлично работает, за исключением того, что каждое значение N добавлено в конец из-за разрыва строки. Я попытался добавить

.strip()

к атрибуту x, но он повторил ошибку атрибута (AttributeError: объект "dict" не имеет атрибута "strip").

Итак, как удалить n?

3 ответов


вы должны strip перед разделением, как это

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

мы используем:str.rstrip здесь, потому что нам просто нужно исключить строки в конце строки.

кроме того, вы можете распаковать ключ и значения сразу, как это

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

вот полный пример, иллюстрирующий, как полоса может использоваться в целом:

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()

предположим, что вы хотели прочитать Вещи в список и удалить новую строку. Вы можете сделать следующее:

# 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()

эта вторая версия программы может легко заменить список словаря всего несколькими очень незначительными изменениями.


кстати, это одна из проблем вы можете избежать, если вы используете csv модуль, потому что он будет полоскать линии для вас:

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

Я также изменил имя переменной my_dict не список.