使用Python实现区分I和L

 更新时间:2024年11月28日 09:32:06   作者:仙草哥哥  
最讨厌分不清I与l,所以为了解决这个问题,这篇文章小编专门为大家介绍了如何使用Python实现区分这些混淆字符,感兴趣的小伙伴可以跟随小编一起学习一下

分不清的I和l

今天,朋友让我在游戏里面加他为好友,并且,他发送了自己的游戏ID给我。不过,由于这个游戏中不支持复制粘贴,所以说,我只能手动输入。

但是,当我看到这个ID的时候,我顿感非常无语,这个ID大概是这样的:

全是小写的l与大写的I组成的,在一些字体中,I与l根本看不出什么差别,这我怎么知道这个名字是什么啊?

我非常困惑:“你起这种名字干嘛?故意整我吗?”

朋友表示很委屈:“不是啊,因为游戏不支持匿名,但是高分段玩家又特别少,所以起一个正常名字很容易被认出来导致被针对,所以说,我们高分段玩家就达成了共识,全都起带有1,I,l的名字,让别人没办法轻松认出来,从而防止被针对。”

他好像说的也很有道理,但是,我该怎么区分出I与l呢?难道要一个一个复制下来去搜索对比吗?

统计混淆字符

当然不可能一个一个搜啦,我们应该用python程序,一次统计出所有的混淆字符。

import re
from collections import defaultdict
 
 
confusable_chars = {
    'I': '大写字母I',
    'l': '小写字母l',
    '1': '数字1',
    '0': '数字0',
    'O': '大写字母O',
    'o': '小写字母o'
}
 
 
text = "IllllIl111llI11111"
 
 
def analyze_confusable_characters(text, confusable_chars):
    results = defaultdict(list)
    
    for i, char in enumerate(text):
        if char in confusable_chars:
            results[char].append(i)
 
    print("混淆字符统计分析:")
    for char, positions in results.items():
        print(f"字符 '{char}' ({confusable_chars[char]}) 出现次数: {len(positions)}, 位置: {positions}")
    
    return results
 
 
results = analyze_confusable_characters(text, confusable_chars)

现在,我们就可以轻松的看到,他们都是什么了

分别标记每个字符

标记了每个字符的位置,有的时候可能仍然不方便输入,因为我总不能一个一个去数他们的位置吧(尤其是出现次数多的情况下),因此,为了方便输入,我们应该从头到尾,把每一个字符依次标记清楚。

confusable_chars = {
    'I': '大写字母I',
    'l': '小写字母l',
    '1': '数字1',
    '0': '数字0',
    'O': '大写字母O',
    'o': '小写字母o'
}
 
 
text = "IllllIl111llI11111"
 
 
def analyze_confusable_characters(text, confusable_chars):
    results = ""
    for idx, char in enumerate(text):
        if char in confusable_chars:
            results += f"第{idx + 1}个字符是:{confusable_chars[char]}\n"
        else:
            results += f"第{idx + 1}个字符是:{char}\n"
 
    return results
 
 
results = analyze_confusable_characters(text, confusable_chars)
print(results)

很好,现在我们只需要根据程序提示,依次输入内容即可:

如果你还有更多的字符容易搞混,例如分不清数字5和字母S的话,也可以通过扩充混淆字符表,从而实现更多的混淆字符的区分,比如说:

confusable_chars = {
    'S': '大写字母S',
    's': '小写字母s',
    '5': '数字5',
    'u': '小写字母u,不是变胖了的v',
    'v': '小写字母v',
    '3': '数字3'
}

到此这篇关于使用Python实现区分I和L的文章就介绍到这了,更多相关Python区分I和L内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python正则表达式教程之三:贪婪/非贪婪特性

    Python正则表达式教程之三:贪婪/非贪婪特性

    这篇文章主要介绍了Python正则表达式中贪婪/非贪婪特性的相关资料,文中通过示例代码介绍的很详细,对大家具有一定的参考价值,需要的朋友下面来一起看看吧。
    2017-03-03
  • 使用python获取电脑的磁盘信息方法

    使用python获取电脑的磁盘信息方法

    今天小编就为大家分享一篇使用python获取电脑的磁盘信息方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python入门:argparse浅析 nargs=''+''作用

    python入门:argparse浅析 nargs=''+''作用

    这篇文章主要介绍了python入门:argparse浅析 nargs='+'作用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python模块之time模块(实例讲解)

    python模块之time模块(实例讲解)

    下面小编就为大家带来一篇python模块之time模块(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Python实现文件夹中文件名对比

    Python实现文件夹中文件名对比

    这篇文章主要为大家详细介绍了如何使用Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • python进程管理工具supervisor的安装与使用教程

    python进程管理工具supervisor的安装与使用教程

    supervisor是用python写的一个进程管理工具,用来启动,重启,关闭进程。下面这篇文章主要给大家介绍了关于python实现的进程管理工具supervisor的安装与使用的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Python 切分数组实例解析

    Python 切分数组实例解析

    这篇文章主要介绍了Python 切分数组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python utc datetime转换为时间戳的方法

    python utc datetime转换为时间戳的方法

    今天小编就为大家分享一篇python utc datetime转换为时间戳的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python获取秒级时间戳与毫秒级时间戳的示例代码

    Python获取秒级时间戳与毫秒级时间戳的示例代码

    这篇文章主要介绍了Python获取秒级时间戳与毫秒级时间戳的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python机器学习NLP自然语言处理基本操作词袋模型

    Python机器学习NLP自然语言处理基本操作词袋模型

    本文是Python机器学习NLP自然语言处理系列文章,带大家开启一段学习自然语言处理 (NLP) 的旅程。本篇文章主要学习NLP自然语言处理基本操作之词袋模型
    2021-09-09

最新评论