当前位置: 代码网 > it编程>前端脚本>Python > 使用Python实现区分I和L

使用Python实现区分I和L

2024年11月29日 Python 我要评论
分不清的i和l今天,朋友让我在游戏里面加他为好友,并且,他发送了自己的游戏id给我。不过,由于这个游戏中不支持复制粘贴,所以说,我只能手动输入。但是,当我看到这个id的时候,我顿感非常无语,这个id大

分不清的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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • 基于Python实现IP代理池

    基于Python实现IP代理池

    一、引言在网络爬虫或数据采集领域,ip代理池是一种常用的工具,用于隐藏真实ip地址、绕过ip限制或增加请求的匿名性。本文将详细介绍如何使用python实现一个简... [阅读全文]
  • python实现二维列表的列表生成式

    python实现二维列表的列表生成式

    二维列表的列表生成式允许你生成一个列表,其中每个元素本身也是一个列表。这在处理矩阵或表格数据时非常有用。以下是如何使用列表生成式来创建二维列表的示例:基本语法[... [阅读全文]
  • Python实现批量图片去重

    Python实现批量图片去重

    1、库的介绍在日常办公的时候,我们经常需要对图片进行去重后保存,如果我们一张张进行寻找,将会非常的耗时,这时候我们可以利用python对图片进行去重处理,保留唯... [阅读全文]
  • Python OpenCV实现图像形状检测

    Python OpenCV实现图像形状检测

    图像形状检测是计算机视觉领域中的一项关键技术,广泛应用于工业自动化、机器人视觉、医学图像处理等多个领域。本文将详细介绍如何使用python和opencv库实现图... [阅读全文]
  • 使用Python删除Word中表格的方法

    使用Python删除Word中表格的方法

    引言在处理word文档时,我们经常会遇到需要删除表格的情况。无论是为了简化文档结构,还是为了更新内容,删除表格都是一个常见的操作。但是通过手动删除不仅耗时,而且... [阅读全文]
  • Vscode好用的一些前端自定义代码推荐

    在vscode中用户可以通过自定义代码模板和设置自定义代码快捷键。在前端开发领域,一些好的自定义代码能够加快我们的开发进度,提升开发效率。下面推荐一些常用的自定义代码片段。设置自定…

    2024年11月30日 前端脚本

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com