首页 > 解决方案 > 用字符串和整数从列表中识别整数

问题描述

我将文件中的数据存储到列表中以分析它的模式。我的目的是能够读取 txt 或 csv 文件。我正在努力寻找一种方法来分析从文件中存储的原始列表中的信息,以识别该列表中的整数。

我尝试了 .isdigit() 内置方法,但它返回 False,尽管“数据”列表是数字、逗号和一些字符串。“数据”列表没有字符串数字,只有整数。

它按预期工作,直到 noCheck 函数只打印 ValueError。

data = []
IntData = []

def analyse():
    try:
        openfile = input('Enter file path: ')
        with open(openfile) as f:
            read = f.read()
            data.append(read)
            print(data)
            next = input('Press any Key to continue..')
            if next == '':
                noCheck()
    except FileNotFoundError:
        print('No File Found')

def noCheck():
    for number in data:
        try:
            IntData.append(int(number))
            print(IntData)
        except ValueError:
            print('No numbers found')


analyse()

任何帮助是极大的赞赏

编辑:这是 txt 文件中的数据:

08,30,34,44,45,57\n09,18,20,42,43,46\n14,19,30,45,48,58\n02,04,17,28,37,45\n14, 18,23,28,36,37\n05,08,40,41,43,45\n18,25,29,32,35,58\n04,10,11,17,53,54\n24,30, 44,50,56,57

标签: pythonlist

解决方案


您的问题是要确定正在读取的行中是否有任何整数。您的代码目前只是将行转换为整数,而不是检查它们是否为整数。

我不知道你的文件是什么样子,但你可以这样做:

for line in data:
    if(isinstance(line, int)):
        IntData.append(line)

您还想在读取文件的最后检查 IntData 的内容,而不是在每一行之后抛出异常。

您可以简单地添加:

if (len(IntData) == 0):
    print("No integers")
else:
    print("There are integers")

推荐阅读