枚举使用python

时间:2019-02-28 21:19:51

标签: python

我是一名新编码员,目前正在尝试编写一段代码,该代码将从打开的txt文档中打印出每条信息所在的行号。 我已经打开了文件,并对所有逗号进行了分割。我在网上发现可以使用一个名为enumerate()的函数来获取行号。但是,当我运行代码而不是获得数字1、2、3时,我得到的信息为:0x113a2cff0。是否知道如何解决此问题/实际问题是什么?下面是用于枚举的代码。

my_document = open("data.txt")
readDocument = my_document.readlines()
invalidData = []
for data in readDocument:
    stripDocument = data.strip()
    if stripDocument.isnumeric() == False:
        data = (enumerate(stripDocument))
        invalidData.append(data)

4 个答案:

答案 0 :(得分:0)

接受您的问题陈述:

  

尝试编写一段代码,该代码将从打开的txt文档中打印出每条信息所在的行号

您使用的enumerate错误,就像@roganjosh试图解释的那样:

with open("data.txt") as my_document:
    for i, data in enumerate(my_document):
        print(i, data)

答案 1 :(得分:0)

首先,首先打开文档并已经阅读其内容,并且使用with是一个好习惯,因为它在使用后会关闭文档。 readlines函数将收集所有行(假定data.txt文件与.py所在的文件夹位于同一文件夹中:

with open("data.txt") as f:
    lines = f.readlines()

之后,使用枚举为行添加索引,以便您可以读取,使用它们甚至保存索引:

for index, line in enumerate(lines):
    print(index, line)

最后一点,如果data.txt上有换行符,则这些行将包含\n,并且可以根据需要使用line.strip()删除它们。

完整代码为:

with open("data.txt") as f:
    lines = f.readlines()

for index, line in enumerate(lines):
    print(index, line.strip())

答案 2 :(得分:0)

您现在的操作方式不是删除逗号。没有参数的strip()方法仅删除行首和结尾的空格。如果只需要数据,则可以使用:

invalidData = []
for row_number, data in enumerate(readDocument):
    stripped_line = ''.join(data.split(','))
    if not stripped_line.isnumeric():
        invalidData.append((row_number, data))

答案 3 :(得分:0)

您可以使用enumerate()函数来枚举列表。这将首先返回包含索引的元组列表,然后返回行字符串。像这样:

(0, 'first line')

您的readDocument是行的列表,因此最好相应地命名。

lines = my_document.readlines()

for i, line in enumerate(lines):
    print i, line