用于将列表长度写入文件的Python程序

2024-09-26 18:05:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件list.txt,它只包含一个列表,例如

[asd,ask,asp,asq]

名单可能很长。我想创建一个python程序len.py,它读取list.txt,并将内部列表的长度写入文件num.txt。如下所示:

fin = open("list.txt", "rt")
fout = open("num.txt", "wt")

for list in fin:
    fout.write(len(list))

fin.close()
fout.close()

然而,这不起作用。有人能指出什么需要改变吗?非常感谢


Tags: 文件txt列表closelenopennumlist
3条回答

当python尝试使用默认方法读取文件时,它通常将该文件的内容视为字符串。所以,第一个责任是将强制转换字符串内容键入适当的内容类型,因为您不能使用默认类型强制转换方法

您可以使用名为ast的特殊包来键入数据

import ast

fin = open("list.txt", "r")
fout = open("num.txt", "w")

for list in fin.readlines():
    fout.write(len(ast.literal_eval(list)))

fin.close()
fout.close()
with open("list.txt") as fin, open("num.txt", "w") as fout:
    input_data = fin.readline()
    # check if there was any info read from input file
    if input_data:
        # split string into list on comma character
        strs = input_data.replace('[','').split('],')
        lists = [map(int, s.replace(']','').split(',')) for s in strs]
        print(len(lists))
        fout.write(str(len(lists)))

我更新了代码以使用另一个答案中的with语句。我还使用了这个答案(How can I convert this string to list of lists?)中的一些代码来(更多?)正确地计算嵌套列表

使用:

with open("list.txt") as f1, open("num.txt", "w") as f2:
    for line in f1:
        line = line.strip('\n[]')
        f2.write(str(len(line.split(','))) + '\n')

相关问题 更多 >

    热门问题