【问题标题】:remove the last two characters from strings in list using python使用python从列表中的字符串中删除最后两个字符
【发布时间】:2020-09-29 16:15:03
【问题描述】:

我有一个非常复杂的问题。至少我的 Python 技能还不足以解决这个问题,我需要帮助,或者至少需要一些关于如何解决这个问题的想法。

我有一个巨大的单词列表,看起来像这样:

words_articles=['diao','carrosos', 'cidadea', cidadesas']

我需要将每个字符串的最后一个或最后两个字符附加到另一个列表中,因为它们是这些单词的文章:'a','o','as','os'

我的结果应该是两个列表,如下所示:

words=['dia','carros', 'cidade', 'cidades']

articles=['o', 'os','a','as']

我不知道如何解决这个问题。我只知道我必须遍历每个字符串,但是从这个阶段开始我不知道该怎么做。

words_articles=['diao','carrosos', 'cidadea', 'cidadesas']
words=[]
articles=[]

for y in words:
    for x in y:

之后我应该怎么做?

【问题讨论】:

  • 您如何知道是否/何时必须删除 1 或 2 个字符?有这些文章的列表吗?它们是否存在于所有单词中?

标签: python string nlp


【解决方案1】:

你可以测试最后一个字母

words_articles=['diao','carrosos', 'cidadea', 'cidadesas']
words=[]
articles=[]

for word in words_articles:
  if word[-1] == 's':
    words.append(word[:-2])
    articles.append(word[-2:])
  else:
    words.append(word[:-1])
    articles.append(word[-1:])

print(words)
print(articles)

输出:

['dia', 'carros', 'cidade', 'cidades']
['o', 'os', 'a', 'as']

【讨论】:

    【解决方案2】:

    您可能希望 'words' 和 'articles' 变量为 sets 以防止重复:

    words_articles=['diao','carrosos', 'cidadea', 'cidadesas']
    words=set()
    articles=set()
    
    for word in words_articles:
        suffix_size = 2 if word.endswith("s") else 1
        words.add(word[:-suffix_size])
        articles.add(word[-suffix_size:])
    

    输出将是:

    {'carros', 'cidade', 'dia', 'cidades'}
    {'a', 'as', 'os', 'o'}
    

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2019-10-25
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      相关资源
      最近更新 更多