You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让isalnum()忽略换行符 ?Python密码校验问题求助

密码校验中换行符导致isalnum()判断错误的解决办法

你的核心问题是读取文件时每行末尾的换行符\n未被处理,导致isalnum()把带\n的字符串判定为非纯字母数字。另外代码还有两处逻辑问题:一是未使用读取到的文件内容做校验,反而复用了写入前的passwords变量;二是close()调用时缺少括号,导致文件未正确关闭。

修正后的代码

# 写入密码文件(用with语句自动管理文件生命周期)
with open("passwords.txt", "w") as s:
    passwords = """5345m345a34l
no2no123non4
noq234n5ioqw#%
%#SGMSGSER
doghdp5234
sg,dermoepm
43453-frgsd
hsth()))
bmepm35wae
vmopaem2234+0+
gsdm12313"""
    s.write(passwords)

# 读取文件并校验密码
with open("passwords.txt", "r") as s:
    for line in s.readlines():
        # 精准去掉每行末尾的换行符,若需清除首尾空格可换成strip()
        password = line.rstrip('\n')
        # 跳过空行(避免无意义校验)
        if not password:
            continue
        if password.isalnum():
            print(f"{password} correct password")
        else:
            print(f"{password} contains incorrect markings")

关键修正说明

  • 用with语句管理文件:自动处理文件的打开与关闭,无需手动调用close(),避免语法错误和资源泄漏
  • 处理换行符:通过rstrip('\n')移除每行末尾的换行符,确保传给isalnum()的是纯密码内容
  • 校验文件实际内容:直接遍历读取到的文件行,保证校验的是文件中的真实数据
  • 跳过空行:避免对文件中可能存在的空行进行无意义判断

内容的提问来源于stack exchange,提问作者Bobby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:03:15