2014-11-11 2 views
-2

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

['\n 62\n ', '\n 178\n ', '\n 7,800\n '] 

... для этого в Python?

['62', '178', '7,800'] 

Я пытаюсь лишить все не алфавитно-цифровые символы из строки, как показано ниже,

import re 
re.sub(r'\W+', '', my_string) 

... но со списками/массивов.

+0

@ Эрик: Спасибо. Я полагал, что это должен быть дуп, но я не мог найти вопрос с хорошим ответом, который имел бы смысл для этого ОП; что он совершенен. – abarnert

ответ

0

Его то, что str.strip([chars]) предназначено для! str.strip Верните копию строки с удалением ведущих и конечных символов. Аргумент chars - это строка, определяющая набор символов, которые нужно удалить. Если опущен или None, аргумент chars по умолчанию удаляет пробел.

>>> l=['\n 62\n ', '\n 178\n ', '\n 7,800\n '] 
>>> [i.strip() for i in l] 
['62', '178', '7,800'] 
+0

@downvoter, пожалуйста, объясните причину вашего downvote сообществу и мне, чтобы улучшить мой ответ! – Kasramvd

+0

Почему это было приостановлено? Это работает хорошо. – octosquidopus

+0

@octosquidopus, как и вы, я удивлен ожиданием причины! – Kasramvd

0

Если вы хотите запустить функцию над каждым членом итератора, как список, вы можете сделать это тремя способами: явное for заявление, вызов функции map, или comprehension.

постижение выглядит следующим образом:

my_new_strings = [re.sub(r'\W+', '', my_string) for my_string in my_strings] 

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

my_new_strings = [] 
for my_string in my_strings: 
    my_new_string.append(re.sub(r'\W', '', my_string)) 

Понимание в основном этот рисунок сгущенный. Они хороши, потому что они устраняют некоторые шаблоны (которые мешают чтению кода и предоставляют больше мест для ошибок во время написания кода), могут использоваться в середине выражения и немного быстрее. Но в конечном счете, они делают то же самое.

0
>>> x=['\n 62\n ', '\n 178\n ', '\n 7,800\n '] 
>>> [re.sub('\W+','',i) for i in x ] 
['62', '178', '7800'] 
Смежные вопросы