我们如何使用Python在字符串的开头删除标点符号?

时间:2014-03-18 03:24:32

标签: python string python-2.7 python-3.x strip

我想使用Python在字符串的开头删除所有类型的标点符号。我的列表包含字符串,其中一些字符串以某种标点符号开头。如何从字符串中删除所有类型的标点符号?

例如:如果我的字词与,,gets类似,我想从字词中删除,,,我希望gets作为结果。此外,我想从列表中删除空格以及数字。我尝试使用以下代码,但它没有产生正确的结果。

如果' a'是包含一些单词的列表:

for i in range (0,len(a)):
      a[i]=a[i].lstrip().rstrip()
      print a[i]

7 个答案:

答案 0 :(得分:6)

您可以使用strip()

  

返回带有前导和尾随字符的字符串副本   除去。 chars参数是一个指定set的字符串   要删除的字符。

传递string.punctuation将删除所有前导和尾随标点字符:

>>> import string
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

>>> l = [',,gets', 'gets,,', ',,gets,,']
>>> for item in l:
...     print item.strip(string.punctuation)
... 
gets
gets
gets

或者,lstrip()如果您只需要删除前导字符rstip() - 用于尾随字符。

希望有所帮助。

答案 1 :(得分:2)

lstriprstrip

中传递您要删除的字符
'..foo..'.lstrip('.').rstrip('.') == 'foo'

答案 2 :(得分:1)

strip()在没有参数的情况下使用时仅剥离空格。如果要剥离任何其他字符,则需要将其作为参数传递给strip函数。在你的情况下你应该做

a[i]=a[i].strip(',')

答案 3 :(得分:1)

从字符串列表中的每个字符串的开头删除标点符号,空格,数字:

import string

chars = string.punctuation + string.whitespace + string.digits    
a[:] = [s.lstrip(chars) for s in a]

注意:它没有考虑非ascii标点符号,空格或数字。

答案 4 :(得分:0)

如果您只想从头开始删除它,请尝试:

    import re
    s='"gets'
    re.sub(r'("|,,)(.*)',r'\2',s)

答案 5 :(得分:0)

假设您要删除所有标点符号,无论它出现在包含字符串的列表中的位置(可能包含多个单词),这都应该有效:

test1 = ",,gets"
test2 = ",,gets,,"
test3 = ",,this is a sentence and it has commas, and many other punctuations!!"
test4 = [" ", "junk1", ",,gets", "simple", 90234, "234"]
test5 = "word1 word2 word3 word4 902344"

import string

remove_l = string.punctuation + " " + "1234567890"

for t in [test1, test2, test3, test4, test5]:
    if isinstance(t, str):
        print " ".join([x.strip(remove_l) for x in t.split()])
    else:
        print [x.strip(remove_l) for x in t \
               if isinstance(x, str) and len(x.strip(remove_l))]

答案 6 :(得分:0)

for each_string in list:
    each_string.lstrip(',./";:') #you can put all kinds of characters that you want to ignore.