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

Python读取文本文件数字行时isnumeric()返回False的问题

问题原因

你调用readlines()方法读取文件内容时,返回的每一行字符串末尾都会自带换行符\n。你以为传入isnumeric()的是"2",实际传入的是"2\n",这种带换行符的字符串不满足纯数字规则,因此判断结果始终为False。硬编码"2"时没有多余字符,所以可以正常返回True。

修复方案

只需要在判断前先调用strip()方法去除字符串首尾的空白字符(包括换行符、空格、制表符等)即可,修改后的代码如下:

import sys

def isCaptionText(line):
    # 先清理行首尾的空白字符
    cleaned_line = line.strip()
    if cleaned_line.isnumeric():
        print('True')
        return False
    else:
        return line

if len(sys.argv) < 3:
    print('Arguments: [source sbv filename] [destination txt filename]')
    sys.exit()

with open(sys.argv[1]) as f1:
    with open(sys.argv[2], 'a') as f2:
        lines = f1.readlines()
        for index, line in enumerate(lines):
            if isCaptionText(line):
                f2.write(line)

print('Output complete. File written as ' + sys.argv[2])

本次同时修正了原代码中参数名的误导性问题,原参数名lineIndex容易让人误以为传入的是行序号,实际传入的是行内容,因此改为line避免逻辑混淆。

额外说明

如果你的文件中存在首尾带空格的数字行(比如" 3 "),strip()处理后也能正确识别。如果不需要保留原行的首尾空格,也可以直接把清理后的行写入目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:06