【问题标题】:Remove selected punctuation from list of sentences从句子列表中删除选定的标点符号
【发布时间】:2014-02-07 04:20:06
【问题描述】:

我有一个句子列表,例如:
['不,2nd main 4th a cross,uas layout,靠近 ganesha Temple/bsnl exchange,sanjaynagar,班加罗尔',
' grihalakshmi 公寓公寓,绍森德路 basavangudi 班加罗尔 -560004。 opp adiyar ananda bhavan 靠近南端 c',
'srinivas pg acomudation ;opp 到 cosmos mall brooke field',
'皇家棕榈树第二个十字架,l b sastry nagar 班加罗尔',
' 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)

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

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

【问题讨论】:

  • 是要删除还是替换?

标签: python list nltk punctuation


【解决方案1】:

试试这个

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

【讨论】:

  • 谢谢.. 如果我添加一些条件.. 比如只在存在介词时删除标点符号??
猜你喜欢
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多