我是一名新编码员,目前正在尝试编写一段代码,该代码将从打开的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)
答案 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