【问题标题】:Remove non alphabetic characters from a list of sentences in Python从 Python 中的句子列表中删除非字母字符
【发布时间】:2021-02-20 11:18:49
【问题描述】:

从这样的列表开始:

sentences = ["da quando è esplosa l'epidemia, ci sono stati -- i dati ufficiali sottostimano il fenomeno -- 92.522 morti, 2.725.106 cittadini colpiti dal virus, in questo momento 2.074 sono i ricoverati in terapia intensiva", 'ci sono 259 morti tra gli operatori sanitari e 118.856 sono quelli contagiati, a dimostrazione di un enorme sacrificio sostenuto con generosità e impegno', 'cifre che hanno messo a dura prova il sistema sanitario nazionale, sottraendo personale e risorse alla prevenzione e alla cura di altre patologie, con conseguenze pesanti sulla salute di tanti italiani', "l'aspettativa di vita, a causa della pandemia, è diminuita: fino a 4 - 5 anni nelle zone di maggior contagio; un anno e mezzo - due in meno per tutta la popolazione italiana"]

我想获取每个元素中没有数字和符号的列表,例如:

["da quando è esplosa l'epidemia ci sono stati i dati ufficiali sottostimano il fenomeno morti cittadini colpiti dal virus in questo momento sono i ricoverati in terapia intensiva", ...]

【问题讨论】:

标签: python string list text


【解决方案1】:
def get_letters(x):
    n_s=[]
    for i in x:
        elem=" ".join([c for c in i.split(' ') if c.isalpha()])
        n_s.append(elem)
    return n_s
get_letters(sentences)  

输出:

['da quando è esplosa ci sono stati i dati ufficiali sottostimano il fenomeno cittadini colpiti dal in questo momento sono i ricoverati in terapia intensiva',
 'ci sono morti tra gli operatori sanitari e sono quelli a dimostrazione di un enorme sacrificio sostenuto con generosità e impegno',
 'cifre che hanno messo a dura prova il sistema sanitario sottraendo personale e risorse alla prevenzione e alla cura di altre con conseguenze pesanti sulla salute di tanti italiani',
 'di a causa della è fino a anni nelle zone di maggior un anno e mezzo due in meno per tutta la popolazione italiana']

【讨论】:

    【解决方案2】:

    您需要定义要过滤的内容。这是您的数据的代码:

    def filter(text):
        skip_space = True
        for ch in text:
            if skip_space and ch == ' ':
                continue
            skip_space = ch in '0123456789.-'
            if skip_space:
                continue
            yield ch
    
    for sentence in sentences:
        result = ''.join(filter(sentence))
        print(result)
        print('=====')
    

    【讨论】:

      【解决方案3】:
      sentences = ["da quando è esplosa l'epidemia, ci sono stati -- i ..."]
      answer = []                   # empty list
      for i in sentences:
          sentence = i.split(" ")
          words = []
          for z in sentence:
              if z[0].isalpha():    # used z[0] because "l'epidemia".isalpha() == False
                  words.append(z)
          answer.append(" ".join(words))
      print(answer)
      
      

      【讨论】:

        猜你喜欢
        • 2014-04-26
        • 2019-11-26
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多