Есть ли более эффективный подход для проверки строки в списке, избегая (слегка) измененных дубликатов? - PullRequest
0 голосов
/ 29 марта 2019

Слегка измененные строки в списке проблем при проверке по отсортированному списку строк.

Я проверяю строки, представляющие содержимое некоторых файлов.И у меня есть список определенных строк, с которыми я проверяю, однако иногда к одной и той же строке может добавляться звездочка (*) в конце, что приводит к слегка измененным дубликатам в этом списке.

В настоящее время:

  # This is minimal very minimal code example: 
  for _word in sorted(['Microsoft','Microsoft*']): 
      print(_word)

Желаемый:

for _word in sorted(['Microsoft']):
    print(_word)

 # But still be able to check for 'Microsoft*' without having duplicates in the list.

Окончательное решение:

import os
import sys

if __name__ == '__main__':

    default_strings = sorted([
        'microsoft',
        'linux',
        'unix',
        'android'
    ])

    text = str("""
        Microsoft* is cool, but Linux is better. 
     """)

    tokens = text.split(" ")
    for token in tokens:
        token = token.lower()
        if token.endswith('*'): 
            token = token[:-1]

        if token in default_strings:
            print(token)

РЕДАКТИРОВАТЬЕсли есть лучший способ, пожалуйста, дайте мне знать.Большое спасибо всем, кто участвовал и ответил.

1 Ответ

0 голосов
/ 29 марта 2019

На основании моего комментария; Если вы не хотите использовать set,

my_filters = ['*']
my_list = ['Microsoft','Microsoft*']
final_list = [ x.replace(y,'')  for x in my_list for y in my_filters if y in x ]

Но я бы сказал, сначала отфильтруйте специальные символы в вашем списке ввода и просто конвертируйте (приведите) в набор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...