Удаление ненужных символов из строки в Python - PullRequest
5 голосов
/ 06 мая 2010

У меня есть несколько строк, которые я хочу удалить из них нежелательные символы. Например: Adam'sApple ----> AdamsApple. (Без учета регистра) Может кто-нибудь помочь мне, мне нужен самый быстрый способ сделать это, потому что у меня есть пара миллионов записей, которые нужно отшлифовать. Спасибо

Ответы [ 9 ]

6 голосов
/ 06 мая 2010

Один простой способ:

>>> s = "Adam'sApple"
>>> x = s.replace("'", "")
>>> print x
'AdamsApple'

... или взгляните на замены регулярных выражений .

5 голосов
/ 06 мая 2010

Любые символы во втором аргументе метода translate удаляются:

>>> "Adam's Apple!".translate(None,"'!")
'Adams Apple'

ПРИМЕЧАНИЕ: для перевода требуется, чтобы Python 2.6 или новее использовал None для первого аргумента, который в противном случае должен быть строкой перевода длиной 256. string.maketrans ('', '') может использоваться в место None для версий до 2.6.

2 голосов
/ 19 сентября 2014

Вот функция, которая удаляет все раздражающие символы ascii, единственное исключение - «&», которое заменяется на «и». Я использую его для защиты файловой системы и обеспечения того, чтобы все файлы соответствовали схеме именования файлов, которую я настаиваю на том, что все используют.

def cleanString(incomingString):
    newstring = incomingString
    newstring = newstring.replace("!","")
    newstring = newstring.replace("@","")
    newstring = newstring.replace("#","")
    newstring = newstring.replace("$","")
    newstring = newstring.replace("%","")
    newstring = newstring.replace("^","")
    newstring = newstring.replace("&","and")
    newstring = newstring.replace("*","")
    newstring = newstring.replace("(","")
    newstring = newstring.replace(")","")
    newstring = newstring.replace("+","")
    newstring = newstring.replace("=","")
    newstring = newstring.replace("?","")
    newstring = newstring.replace("\'","")
    newstring = newstring.replace("\"","")
    newstring = newstring.replace("{","")
    newstring = newstring.replace("}","")
    newstring = newstring.replace("[","")
    newstring = newstring.replace("]","")
    newstring = newstring.replace("<","")
    newstring = newstring.replace(">","")
    newstring = newstring.replace("~","")
    newstring = newstring.replace("`","")
    newstring = newstring.replace(":","")
    newstring = newstring.replace(";","")
    newstring = newstring.replace("|","")
    newstring = newstring.replace("\\","")
    newstring = newstring.replace("/","")        
    return newstring
2 голосов
/ 06 мая 2010

Попробуйте:

"Adam'sApple".replace("'", '')

Еще один шаг, чтобы заменить несколько символов ничем:

import re
print re.sub(r'''['"x]''', '', '''a'"xb''')

Урожайность:

ab
1 голос
/ 06 мая 2010

Как уже указывалось несколько раз, вы должны либо использовать replace, либо регулярные выражения (хотя, скорее всего, вам не нужны регулярные выражения), но если вам также нужно убедиться, что получающаяся строка является простой ASCII (не содержит прикольных символов, таких как é, ò, µ, æ или & phi;), вы, наконец, могли бы сделать

>>> u'(like é, ò, µ, æ or φ)'.encode('ascii', 'ignore')
'(like , , ,  or )'
1 голос
/ 06 мая 2010
str.replace("'","");
0 голосов
/ 20 июня 2019

Я, вероятно, опаздываю на ответ, но думаю, что приведенный ниже код также подойдет (до крайности) удалит все ненужные символы:

a = '; niraj kale 984wywn on 2/2/2017'
a= re.sub('[^a-zA-Z0-9.?]',' ',a)
a = a.replace('  ',' ').lstrip().rstrip()

, который даст

'niraj kale 984wywn 2 2 2017'

0 голосов
/ 17 июня 2018

Допустим, у нас есть следующий список:

states = [' Alabama ', 'Georgia!', 'Georgia', 'georgia', 'south carolina##', 'West virginia?']

Теперь мы определим функцию clean_strings()

import re

def clean_strings(strings):
    result = []
    for value in strings:
        value = value.strip()
        value = re.sub('[!#?]', '', value)
        value = value.title()
        result.append(value)
    return result

Когда мы вызываем функцию clean_strings(states)

Результат будет выглядеть так:

['Alabama',
'Georgia',
'Georgia',
'Georgia',
'Florida',
'South Carolina',
'West Virginia']
0 голосов
/ 04 октября 2016

Альтернатива, которая будет принимать строку и массив нежелательных символов

    # function that removes unwanted signs from str
    #Pass the string to the function and an array ofunwanted chars

def removeSigns(str,arrayOfChars):

    charFound = False

    newstr = ""

    for letter in str:
        for char in arrayOfChars:
            if letter == char:
                charFound = True
                break
        if charFound == False:
            newstr += letter
        charFound = False

    return newstr
...