在Python中从字符串中删除不需要的字符

时间:2010-05-06 12:05:14

标签: python parsing string

我有一些字符串,我想从中删除一些不需要的字符。 例如:Adam'sApple ----> AdamsApple。(不区分大小写) 有人可以帮助我,我需要最快的方法来做到这一点,因为我有几百万条记录需要打磨。 感谢

9 个答案:

答案 0 :(得分:5)

一个简单的方法:

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

...或者查看regex substitutions

答案 1 :(得分:5)

translate方法的第二个参数中的任何字符都将被删除:

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

注意:translate要求Python 2.6或更高版本对第一个参数使用None,否则必须是长度为256的翻译字符串。string.maketrans('','')可用于代替None 2.6之前的版本。

答案 2 :(得分:2)

尝试:

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

更进一步,用什么都不替换多个字符:

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

收率:

ab

答案 3 :(得分:2)

这是一个删除所有恼人的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

答案 4 :(得分:1)

str.replace("'","");

答案 5 :(得分:1)

正如现在多次指出的那样,你必须使用replace或正则表达式(尽管你很可能不需要正则表达式),但如果你还需要确保结果字符串是纯ASCII(不包含像é,ò,μ,æ或φ这样的时髦字符),你终于可以做了

>>> u'(like é, ò, µ, æ or φ)'.encode('ascii', 'ignore')
'(like , , ,  or )'

答案 6 :(得分:0)

一种替代方案,它将接收一个字符串和一组不需要的字符

    # 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

答案 7 :(得分:0)

我们说我们有以下列表:

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']

答案 8 :(得分:0)

我可能迟到了答案,但我认为下面的代码也可以(达到极致) 它将删除所有不必要的字符:

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

这将给

  

'niraj kale 984wywn on 2 2 2017'