繁体   English   中英

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

[英]Python program for writing length of list to file

我有一个文件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()

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

利用:

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')
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 语句。 我还使用了这个答案中的一些代码( 如何将此字符串转换为列表列表? )来(更多?)正确计算嵌套列表。

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

您可以使用名为ast的特殊 package 类型转换数据。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM