我想使用Python在字符串的开头删除所有类型的标点符号。我的列表包含字符串,其中一些字符串以某种标点符号开头。如何从字符串中删除所有类型的标点符号?
例如:如果我的字词与,,gets
类似,我想从字词中删除,,
,我希望gets
作为结果。此外,我想从列表中删除空格以及数字。我尝试使用以下代码,但它没有产生正确的结果。
如果' a'是包含一些单词的列表:
for i in range (0,len(a)):
a[i]=a[i].lstrip().rstrip()
print a[i]
答案 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)
在lstrip
和rstrip
'..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.