我正在尝试将逗号分隔的列表从.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)
我对此代码有一些问题。在python 3.6中,我无法运行第三行(使用li.split(,我猜测是因为li不是字符串。但是如果我在尝试拆分之前将 li 转换为字符串,它也不起作用。
我的做法是否正确?你会做任何不同的事情吗?
谢谢你的关注。
readlines
返回一个列表,并且您希望对字符串执行拆分,因此您需要改用read
来返回字符串。
一个可能的解决方案是:
def iterateList():
with open('lib.txt') as f:
data = f.read().split(',')
while True:
for i in data:
otherFunction(i)
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
1. 确保您使用的是with open()
.
这可确保文件操作在使用后被 Python 关闭。有关详细信息,请参阅文档:
在处理文件对象时,最好使用
with
关键字。优点是文件在其套件完成后会正确关闭,即使在某个时候引发异常也是如此。
阿拉伯数字。与.split(",")
相比,更易于.split(", ")
由于从技术上讲,每个数字都由逗号空格分隔,因此一次处理这两个数字更容易,否则您最终会得到如下输出:
483749
9384723
38485903
4875659
27388495n # We remove the 'n' in number 4 below.
3.您必须遍历该行才能抓住单词。
这就是for line in file:
发挥作用的地方。在你得到线之后,你得到数字;for number in line.split(", ")
.
4. 将"n"
替换为""
。
由于行的末尾您将有一个n
,确保用什么都没有替换它。
您需要循环访问代码中的li
。以这个为例:
def iterateList():
li=open('lib.txt').readlines()
for line in li:
items = line.split(',')
for item in items:
print(item)
# otherFunction(item)