Какой самый эффективный способ в Python преобразовать строку во все строчные буквы, удаляя все не-ascii буквенные символы? - PullRequest
28 голосов
/ 12 марта 2009

У меня есть простая задача, которую мне нужно выполнить в Python: преобразовать строку во все строчные буквы и удалить все не-ascii не-буквенные символы

Например:

"This is a Test" -> "thisisatest"
"A235th@#$&( er Ra{}|?>ndom" -> "atherrandom"

У меня есть простая функция для этого:

import string
import sys

def strip_string_to_lowercase(s):
    tmpStr = s.lower().strip()
    retStrList = []
    for x in tmpStr:
        if x in string.ascii_lowercase:
            retStrList.append(x)

    return ''.join(retStrList)

Но я не могу не думать, что есть более эффективный или более элегантный способ.

Спасибо!


Edit:

Спасибо всем, кто ответил. Я выучил, а в некоторых случаях переучился, много Python.

Ответы [ 11 ]

0 голосов
/ 12 марта 2009

Лично я бы использовал регулярное выражение, а затем преобразовал последнюю строку в нижний регистр. Я понятия не имею, как написать это на Python, но основная идея заключается в следующем:

  1. Удалить символы в строке, которые не соответствуют регистронезависимому регулярному выражению "\w"
  2. Преобразовать строку в нижний регистр

или наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...