从句子列表中删除选定的标点符号

时间:2014-02-07 04:20:07

标签: python list nltk punctuation

我有一个句子列表,如:
['不,第2个主要的第4个十字架,uas布局,靠近ganesha temple / bsnl exchange,sanjaynagar,bangalore',
 'grihalakshmi apartments flat,southend road basavangudi bangalore -560004。 ad adiyar ananda bhavan靠近南端c',
 'srinivas pg acomudation; opp to cosmos mall brooke field',
 '皇家棕榈第二十字架,l b sastry nagar bangalore',
 'bmp ho name grija \ krishnappa garden bagamane .technologi park cv ramanagar']

我需要删除除了和/之外的所有标点符号。我使用string.punctuation删除所有标点符号

def punc(x):
    predicate = lambda y:y not in string.punctuation
    out = filter(predicate,x)
    return out
data = data.apply(punc)

这删除了所有内容..想要删除选定的..plz帮助

当它是数据帧的一部分时,我使用了.apply()。现在我已将其转换为列表。所以请推荐一种处理列表对象中特殊标点符号的技术。

1 个答案:

答案 0 :(得分:3)

试试这个

def punc(x):
    predicate = lambda y:y not in ''.join(c for c in string.punctuation if c not in ',/')
    out = filter(predicate,x)
    return out

此外,不推荐使用apply()。

当介词在字符串中时删除。

def punc(x):
    predicate = lambda y:y not in ''.join(c for c in string.punctuation if c not in './')
    prepositions = ['a', 'in']  #define by yourself
    if any(p in x.split() for p in prepositions):
        return filter(predicate,x)
    return x