Среди других проблем у вас есть перекрывающаяся логика: вы не можете проверить, что целевая («старая») строка является полным словом, прежде чем заменить его.Например, с типом ввода «PLACE» вы запускаете как первую, так и третью замены, генерируя PlaceACE
, а затем PlaceaceACE
, прежде чем доберетесь до требуемого условия.
Вам необходимо пройти черезвнимательно следите за логикой отслеживания и исключения, а затем примените только одну замен.Вы можете проверить длину street_type и применить уникальный переход, необходимый для этой длины.
Если вы пытаетесь преобразовать оператор case
, тогда вам нужно следовать этому логическому шаблону, а непоследовательные приложения, которые вы закодировали.Вы можете легко найти, как имитировать оператор "case" в Python.
Также рассмотрите возможность использования словаря перевода, такого как
type_trans = {
"pl": "Place",
"Pl": "Place",
"PLACE": "Place",
...
}
Тогда ваше изменение просто
mydata['Street_type'] = type_trans[mydata['Street_type']]
Кроме того, вы можете перечислить все варианты в кортеже, например:
type_place = ("PL", "Pl", "pl", "PLACE", "place")
if mydata['Street_type'] in type_place
mydata['Street_type'] = "Place"
... но не забудьте обобщить это правильно для всего списка типов улиц.