當前位置: 首頁>>代碼示例>>Python>>正文


Python difflib.get_close_matches方法代碼示例

本文整理匯總了Python中difflib.get_close_matches方法的典型用法代碼示例。如果您正苦於以下問題:Python difflib.get_close_matches方法的具體用法?Python difflib.get_close_matches怎麽用?Python difflib.get_close_matches使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在difflib的用法示例。


在下文中一共展示了difflib.get_close_matches方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: add_command

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def add_command(self, ctx: Context, *, name: OffTopicName) -> None:
        """
        Adds a new off-topic name to the rotation.

        The name is not added if it is too similar to an existing name.
        """
        existing_names = await self.bot.api_client.get('bot/off-topic-channel-names')
        close_match = difflib.get_close_matches(name, existing_names, n=1, cutoff=0.8)

        if close_match:
            match = close_match[0]
            log.info(
                f"{ctx.author} tried to add channel name '{name}' but it was too similar to '{match}'"
            )
            await ctx.send(
                f":x: The channel name `{name}` is too similar to `{match}`, and thus was not added. "
                "Use `!otn forceadd` to override this check."
            )
        else:
            await self._add_name(ctx, name) 
開發者ID:python-discord,項目名稱:bot,代碼行數:22,代碼來源:off_topic_names.py

示例2: search_command

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def search_command(self, ctx: Context, *, query: OffTopicName) -> None:
        """Search for an off-topic name."""
        result = await self.bot.api_client.get('bot/off-topic-channel-names')
        in_matches = {name for name in result if query in name}
        close_matches = difflib.get_close_matches(query, result, n=10, cutoff=0.70)
        lines = sorted(f"• {name}" for name in in_matches.union(close_matches))
        embed = Embed(
            title="Query results",
            colour=Colour.blue()
        )

        if lines:
            await LinePaginator.paginate(lines, ctx, embed, max_size=400, empty=False)
        else:
            embed.description = "Nothing found."
            await ctx.send(embed=embed) 
開發者ID:python-discord,項目名稱:bot,代碼行數:18,代碼來源:off_topic_names.py

示例3: _check_value

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def _check_value(self, action, value):
        # Override to customize the error message when a argument is not among the available choices
        # converted value must be one of the choices (if specified)
        import difflib
        import sys

        if action.choices is not None and value not in action.choices:
            # parser has no `command_source`, value is part of command itself
            error_msg = "{prog}: '{value}' is not in the '{prog}' command group. See '{prog} --help'.".format(
                prog=self.prog, value=value)
            logger.error(error_msg)
            candidates = difflib.get_close_matches(value, action.choices, cutoff=0.7)
            if candidates:
                print_args = {
                    's': 's' if len(candidates) > 1 else '',
                    'verb': 'are' if len(candidates) > 1 else 'is',
                    'value': value
                }
                suggestion_msg = "\nThe most similar choice{s} to '{value}' {verb}:\n".format(**print_args)
                suggestion_msg += '\n'.join(['\t' + candidate for candidate in candidates])
                print(suggestion_msg, file=sys.stderr)

            self.exit(2) 
開發者ID:microsoft,項目名稱:knack,代碼行數:25,代碼來源:parser.py

示例4: _guess_radii_from_masses

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def _guess_radii_from_masses(interface, group, guessed):
    radii = np.copy(group.radii)
    masses = group.masses
    types = group.types
    unique_masses = np.unique(masses)
    # Let's not consider atoms with zero mass.
    unique_masses = unique_masses[unique_masses > 0]
    d = atoms_maps
    for target_mass in unique_masses:
        atype, _ = min(
            d.items(),
            key=lambda __entry: abs(__entry[1]['mass'] - target_mass))
        try:
            match_type = get_close_matches(
                atype, interface.radii_dict.keys(), n=1, cutoff=0.1)
            rd = interface.radii_dict
            radii[masses == target_mass] = rd[match_type[0]]
            for t in types[masses == target_mass]:
                guessed.update({t: rd[match_type[0]]})
        except BaseException:
            pass
        group.radii = radii 
開發者ID:Marcello-Sega,項目名稱:pytim,代碼行數:24,代碼來源:properties.py

示例5: search

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def search(cls, query):
        cls.bypass(cls)
        soup = helpers.soupify(helpers.get("https://erai-raws.info/anime-list/"))
        result_data = soup.find("div", {"class":"shows-wrapper"}).find_all("a")
        titles = [x.text.strip() for x in result_data]

        #Erai-raws doesnt have a search that I could find - so I've opted to implement it myself
        titles = get_close_matches(query, titles, cutoff=0.2)
        result_data = [x for x in result_data if x.text.strip() in titles]

        search_results = [
            SearchResult(
                title = result.text.strip(),
                url = "https://erai-raws.info/anime-list/" + result.get("href")
                )
            for result in result_data
            ]
        return search_results 
開發者ID:vn-ki,項目名稱:anime-downloader,代碼行數:20,代碼來源:erairaws.py

示例6: _open_job_by_id

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def _open_job_by_id(project, job_id):
    "Attempt to open a job by id and provide user feedback on error."
    try:
        return project.open_job(id=job_id)
    except KeyError:
        close_matches = difflib.get_close_matches(
            job_id, [jid[:len(job_id)] for jid in project.find_job_ids()])
        msg = "Did not find job corresponding to id '{}'.".format(job_id)
        if len(close_matches) == 1:
            msg += " Did you mean '{}'?".format(close_matches[0])
        elif len(close_matches) > 1:
            msg += " Did you mean any of [{}]?".format('|'.join(close_matches))
        raise KeyError(msg)
    except LookupError:
        n = project.min_len_unique_id()
        raise LookupError("Multiple matches for abbreviated id '{}'. "
                          "Use at least {} characters for guaranteed "
                          "unique ids.".format(job_id, n)) 
開發者ID:glotzerlab,項目名稱:signac,代碼行數:20,代碼來源:__main__.py

示例7: retrive_definition

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def retrive_definition(word):
    #Removing the case-sensitivity from the program
    #For example 'Rain' and 'rain' will give same output
    #Converting all letters to lower because out data is in that format
    word = word.lower()

    #Check for non existing words
    #1st elif: To make sure the program return the definition of words that start with a capital letter (e.g. Delhi, Texas)
    #2nd elif: To make sure the program return the definition of acronyms (e.g. USA, NATO)
    if word in data:
        return data[word]
    elif word.title() in data:
        return data[word.title()]
    elif word.upper() in data:
        return data[word.upper()]
    #3rd elif: To find a similar word
    #-- len > 0 because we can print only when the word has 1 or more close matches
    #-- In the return statement, the last [0] represents the first element from the list of close matches 
    elif len(get_close_matches(word, data.keys())) > 0:
        return ("Did you mean %s instead?" % get_close_matches(word, data.keys())[0])

#Input from user 
開發者ID:Dhrumilcse,項目名稱:Interactive-Dictionary-in-Python,代碼行數:24,代碼來源:dictionary_5.py

示例8: resolve_command

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def resolve_command(self, ctx, args):
        """
        Overrides clicks ``resolve_command`` method
        and appends *Did you mean ...* suggestions
        to the raised exception message.
        """
        original_cmd_name = click.utils.make_str(args[0])

        try:
            return super(DYMMixin, self).resolve_command(ctx, args)
        except click.exceptions.UsageError as error:
            error_msg = str(error)
            matches = difflib.get_close_matches(original_cmd_name,
                                                self.list_commands(ctx), self.max_suggestions, self.cutoff)
            if matches:
                error_msg += '\n\nDid you mean one of these?\n    %s' % '\n    '.join(matches)  # pylint: disable=line-too-long

            raise click.exceptions.UsageError(error_msg, error.ctx) 
開發者ID:pypa,項目名稱:pipenv,代碼行數:20,代碼來源:__init__.py

示例9: _get_first_word

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def _get_first_word(word, data_list):
    """Finds all occurrences of the first searched word."""
    words_found = []
    cutoff_type = (
        "digit" if _replace_multiple(word, digit_chars, "").isdigit() else "string"
    )
    for data in data_list:
        cutoff = cutoffs[cutoff_type]["max_cutoff"]
        while cutoff >= cutoffs[cutoff_type]["min_cutoff"]:
            if difflib.get_close_matches(word, [data[11]], cutoff=cutoff):
                try:
                    vd = _create_rectangle_from_ocr_data(data, data[12])
                    if not _is_similar_result(words_found, vd.x, vd.y, WORD_PROXIMITY):
                        words_found.append(vd)
                except ValueError:
                    continue
            cutoff -= cutoffs[cutoff_type]["step"]
    return words_found 
開發者ID:mozilla,項目名稱:iris,代碼行數:20,代碼來源:text_search.py

示例10: __str__

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def __str__(self):
        if len(self.args) == 2:
            item, keys = self.args
            import difflib
            # Suggestions are sorted by their similarity.
            suggestions = difflib.get_close_matches(
                item, keys, cutoff=0, n=100
            )
            return f'{item!r}.\n' \
                   f'Close matches: {suggestions!r}'
        elif len(self.args) == 3:
            item, keys, msg = self.args
            import difflib
            # Suggestions are sorted by their similarity.
            suggestions = difflib.get_close_matches(
                item, keys, cutoff=0, n=100
            )
            return f'{item!r}.\n' \
                   f'Close matches: {suggestions!r}\n' \
                   f'{msg}'
        else:
            return super().__str__() 
開發者ID:fgnt,項目名稱:pb_bss,代碼行數:24,代碼來源:wrapper.py

示例11: check_base_type

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def check_base_type(self):
        """
        Check if alias message has correct base type
        """
        registered_alias_msgs = list(
            dict['alias'] for dict in self.msg_id_map['rtps'] if 'alias' in list(dict.keys()))

        base_types = []
        for dict in self.msg_id_map['rtps']:
            if 'alias' not in list(dict.keys()):
                base_types.append(dict['msg'])

        incorrect_base_types = list(
            set(registered_alias_msgs) - set(base_types))

        base_types_suggestion = {}
        for incorrect in incorrect_base_types:
            base_types_suggestion.update({incorrect: difflib.get_close_matches(
                incorrect, base_types, n=1, cutoff=0.6)})

        if len(base_types_suggestion) > 0:
            raise AssertionError(
                ('\n' + '\n'.join('\t- The multi-topic message base type \'{}\' does not exist.{}'.format(k, (' Did you mean \'' + v[0] + '\'?' if v else '')) for k, v in list(base_types_suggestion.items())))) 
開發者ID:PX4,項目名稱:px4_ros_com,代碼行數:25,代碼來源:uorb_rtps_classifier.py

示例12: check_monitoring

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def check_monitoring(self) -> Tuple[bool, str]:
        monitoring = self.get_monitoring()
        valid_teams = list_teams()
        if monitoring is not None:
            team_name = monitoring.get("team", None)
            if team_name is None:
                return False, "Team name is required for monitoring"
            elif team_name not in valid_teams:
                suggest_teams = difflib.get_close_matches(
                    word=team_name, possibilities=valid_teams
                )
                return (
                    False,
                    f"Invalid team name: {team_name}. Do you mean one of these: {suggest_teams}",
                )
        return True, "" 
開發者ID:Yelp,項目名稱:paasta,代碼行數:18,代碼來源:tron_tools.py

示例13: resolve_command

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def resolve_command(self, ctx, args):
        """Override clicks ``resolve_command`` method
        and appends *Did you mean ...* suggestions
        to the raised exception message.
        """
        try:
            return super(AliasedGroup, self).resolve_command(ctx, args)
        except click.exceptions.UsageError as error:
            error_msg = str(error)
            original_cmd_name = click.utils.make_str(args[0])
            matches = difflib.get_close_matches(
                original_cmd_name,
                self.list_commands(ctx),
                self.max_suggestions,
                self.cutoff)
            if matches:
                error_msg += '\n\nDid you mean one of these?\n    {0}'.format(
                    '\n    '.join(matches))
            raise click.exceptions.UsageError(error_msg, error.ctx) 
開發者ID:cloudify-cosmo,項目名稱:cloudify-cli,代碼行數:21,代碼來源:cfy.py

示例14: find_closest_match

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def find_closest_match(name, name_dict, fuzzy_match, threshold=0.0):
    """Approximate matching subroutine"""

    # Scrub non-alphanumerics from name and lowercase it.
    scrubber = re.compile("[\W.]+")
    name = scrubber.sub("", name).lower()

    # Return regular dictionary lookup if fuzzy matching is not enabled.
    if fuzzy_match == False:
        return name_dict[name]

    # Find the closest fuzzy match to the given name in the scrubbed list.
    # Set the matching threshold to 0 so it always gives some result.
    match = difflib.get_close_matches(name, list(name_dict.keys()), 1, threshold)[0]

    return name_dict[match] 
開發者ID:xesscorp,項目名稱:KiPart,代碼行數:18,代碼來源:common.py

示例15: _check_value

# 需要導入模塊: import difflib [as 別名]
# 或者: from difflib import get_close_matches [as 別名]
def _check_value(self, action, value):
        """
        It's probably not a great idea to override a "hidden" method
        but the default behavior is pretty ugly and there doesn't
        seem to be any other way to change it.
        """
        # converted value must be one of the choices (if specified)
        if action.choices is not None and value not in action.choices:
            msg = ['Invalid choice, valid choices are:\n']
            for i in range(len(action.choices))[::self.ChoicesPerLine]:
                current = []
                for choice in action.choices[i:i+self.ChoicesPerLine]:
                    current.append('%-40s' % choice)
                msg.append(' | '.join(current))
            possible = get_close_matches(value, action.choices, cutoff=0.8)
            if possible:
                extra = ['\n\nInvalid choice: %r, maybe you meant:\n' % value]
                for word in possible:
                    extra.append('  * %s' % word)
                msg.extend(extra)
            raise argparse.ArgumentError(action, '\n'.join(msg)) 
開發者ID:gkrizek,項目名稱:bash-lambda-layer,代碼行數:23,代碼來源:argparser.py


注:本文中的difflib.get_close_matches方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。