Python从txt文件导入列表、迭代和作为参数传递

2024-10-03 21:26:15 发布

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

我试图将逗号分隔的列表从.txt文件(lib.txt)导入python列表。然后我想迭代列表中的每个项目,将每个值作为参数传递给另一个函数。一旦完成,循环应该继续到列表中的下一项,并且是无止境的,因为一旦循环到达列表的末尾,它就会重新开始

txt文件(lib.txt)的示例:

483749, 9384723, 38485903, 4875659, 27388495

以下是我正在尝试的:

def iterateList():
    li=open('lib.txt').readlines()
    li=list(li.split(','))
    for i in li:
        otherFunction(i)

我对这段代码有一些问题。在Python3.6中,我无法运行第3行(使用li.split),我猜是因为li不是字符串。但是,如果我在尝试拆分之前将li转换为字符串,它也不起作用

我的做法正确吗?你会有不同的做法吗

谢谢你的关注


Tags: 文件项目函数字符串txt示例列表lib
3条回答

您需要迭代代码中的li。以此为例:

def iterateList():
    li=open('lib.txt').readlines()

    for line in li:
        items = line.split(',')
        for item in items:
            print(item)
            # otherFunction(item)
with open("test.txt") as f:
    file = f.readlines()

for line in file:
    numbers = line.split(", ")

    for number in numbers:
        number = number.replace("\n", "")

        print(number)

产出:

483749
9384723
38485903
4875659
27388495

一,。确保您正在使用with open()

这可以确保文件操作在使用后由Python关闭。有关更多信息,请参见docs

It is good practice to use the with keyword when dealing with file objects. The advantage is that the file is properly closed after its suite finishes, even if an exception is raised at some point.

二,。与{}

由于从技术上讲,每个数字都用逗号分隔,因此更容易一次处理两个数字,否则您将得到如下输出:

483749
 9384723
 38485903
 4875659
 27388495\n # We remove the '\n' in number 4 below.

三,。你必须重复这一行才能抓住单词。

这就是for line in file:发挥作用的地方。当你接到电话后,你会得到号码for number in line.split(", ")

四,。用""替换"\n"

由于行尾将有一个\n,请确保将其替换为空

readlines返回一个列表,您希望对字符串执行拆分,因此需要使用read来返回字符串

一个可能的解决办法是:

def iterateList():
    with open('lib.txt') as f:
        data = f.read().split(',')
    while True:
        for i in data:
            otherFunction(i)

相关问题 更多 >