логичный способ очистить список типов данных в python - PullRequest
0 голосов
/ 08 апреля 2020

Привет, ребята, я получаю много данных в виде данных списка, и я всегда зацикливаюсь на том, что не могу их очистить. Чтобы быть более понятным, большая часть очистки строковых данных выполняется с использованием методов split (), strip () и replace () . но, к сожалению, эти методы не работают с типом данных списка.

['2. Skoda\n', '3. Opel\n', '4. Audi\n', '5. Isuzu\n', '6. Acura\n', '7. Subaru \n', '8. Jaguar \n', '9. Jeep\n', 

'10 .Mazda \ n ', '11 .Mini \ n', '12 .Land Rover \ n ',' 13.Lexus \ n ', '14 .Saab \ n', '15 .Peugeot \ n ', '16 .Renault \ n', '17 .Proton \ n ', '18 .Daewoo \ n', '19. Citroen \ n ', '20 .SsangYong \ n', '21 .Cadilla c \ n ', '22 .Fiat \ n', '23 .Aston Martin \ n ', '24 .Mercedes \ n', ' 25.Мочи \ n ', '26. Макларен \ n', '27 .Infiniti \ n ', '28 .Lotus \ n', '29 .Bentley \ n ', '30 .Maserati \ n', '31. Ferrari \ n ', '32 .Honda \ n', '33 .Nissan \ n ', '34 .Haval \ n', '35 .Ford \ n ', '36 .Volvo \ n', '37 .Seat \ n ', '38 .Toyota \ n', '39 .Perodua \ n ', '40 .Geely \ n', '41 .Mitsubishi \ n ', '41 .Alfa Romeo \ n', '42 .Dahitsau \ n ', '43. Volkswagen \ n', '44 .Porsche \ n ', '45 .Hyundai \ n', '46 .Bugatti \ n ', '47 .Lamborghini \ n', '48 .Rolls Royce \ n ' , '49 .Suzuki \ n ', '50 .Tesla']

Итак, есть ли способ удалить запятые, пробелы и новую строку.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Один из способов сделать это - использовать Regex

import re
oldList = ['2. Skoda\n', '3. Opel\n', '4. Audi\n', '5. Isuzu\n', '6. Acura\n', '7. Subaru \n', '8. Jaguar \n', '9. Jeep\n','10.Mazda\n', '11.Mini\n', '12.Land Rover\n', '13.Lexus\n', '14.Saab\n', '15.Peugeot \n', '16.Renault \n', '17.Proton\n', '18.Daewoo \n', '19.Citroen \n', '20.SsangYong\n', '21.Cadillac \n', '22.Fiat\n', '23.Aston Martin\n', '24.Mercedes\n', '25.Mochi \n', '26.Mclaren \n', '27.Infiniti \n', '28.Lotus\n', '29.Bentley \n', '30.Maserati\n', '31.Ferrari \n', '32.Honda\n', '33.Nissan\n', '34.Haval\n', '35.Ford\n', '36.Volvo\n', '37.Seat\n', '38.Toyota\n', '39.Perodua \n', '40.Geely \n', '41.Mitsubishi \n', '41.Alfa Romeo \n', '42.Dahitsau\n', '43.Volkswagen\n', '44.Porsche \n', '45.Hyundai \n', '46.Bugatti\n', '47.Lamborghini\n', '48.Rolls Royce \n', '49.Suzuki\n', '50.Tesla']
newList = []
for str in oldList:
    newList.append(re.sub(r'[, \n]+', "", str))
print(newList)

Я заметил, что он также удаляет пробелы между словами. Alfa Romeo становится AlfaRomeo, а Rolls Royce становится RollsRoyce. Что-то отметить

0 голосов
/ 08 апреля 2020

Вы на правильном пути с использованием функций, которые вы упомянули, и что вы не можете применить их к типу данных списка. Однако вы можете выполнять итерацию по списку и выполнять эти функции по отношению к содержимому списка.

data_arr = ['2. Skoda\n', '3. Opel\n']
junk_chars = list(",.\n")
for i, entry in enumerate(data_arr):
  for junk_char in junk_chars:
    entry = entry.replace(junk_char, "")
  data_arr[i] = entry

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

data_arr = ['2. Skoda\n', '3. Opel\n']
data_arr = [entry.replace(",","").replace("\n","") for entry in data_arr]

Вы также можете использовать map () в соответствии с комментарием выше:

def clean_entries(entry: str) -> str:
 junk_chars = list(",.\n")
 for junk_char in junk_chars:
   entry = entry.replace(junk_char, "")
 return entry

data_arr = ['2. Skoda\n', '3. Opel\n']
data_arr = map(clean_entries, data_arr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...