У меня проблема с удалением \ n в моей программе вот код
with open(filename) as f:
for line in f.readlines():
parent, child = line.split(",")
parent.strip()
child.strip()
children[child].append(parent)
пробовал использовать .rstrip и другие варианты, но для меня это ничего не дало, вот результат, который я получаю
{'Patricia\n': ['Mary'], 'Lisa\n': ['Mary']}
проблема в том, что когда я называю детей ["Патрисия"], я получаю [], потому что он распознает только детей ["Патрисия \ n"]






Пожалуйста, используйте strip перед split:
parent, child = line.rstrip("\n").split(",")
Проблема заключалась в следующем: необходимо переназначить parent.strip() строке, поскольку строки неизменяемы.
Извините за задержку с объяснением. parent.strip() необходимо переназначить строке. Следовательно, вы не заметили разницы.
Вызов strip() сам по себе не изменяет исходное значение. Вам нужно будет либо сначала присвоить переменную, либо использовать ее при создании словаря.
Посмотрите, решает ли следующий фрагмент вашу проблему
with open(filename) as f:
for line in f.readlines():
parent, child = line.split(",")
children[child.strip()].append(parent.strip())
На самом деле вы были довольно близки. Строки неизменяемы, поэтому при вызове strip() будет возвращена новая строка, а исходная останется неизменной.
Так что заменив
parent.strip()
child.strip()
с участием
parent = parent.strip()
child = child.strip()
сделает свое дело.
Это приемлемое решение, но, возможно, вы могли бы объяснить, почему исходный код OP не работал, хотя он также вызывает strip.