首页 > 解决方案 > 如何使用函数的输出对字符串进行切片?

问题描述

我是 Python 的新手。我正在尝试使用 2 个函数的输出作为 slice() 方法的开始值和结束值。

file=open("../dataFiles/mbox-short.txt", mode='r')
line=file.readline()

def firstposition ():
    return int(line.find("@"))

def secondposition ():
    return int(line.find(" ", firstposition))

while line != "":
    i=line[firstposition:secondposition]
    print(i)
    line = file.readline()

file.close()

我从 PyLab 收到以下错误:

Syntax error line 19: 
i=line[firstposition:secondposition]
TypeError:
slice indices must be integers or None or have an __index__ method

如果函数返回整数,为什么切片不接受它们?使用的 .txt 文件包含带有单词和电子邮件地址的行,目的是索引每个域的开始和结束。

标签: pythonpython-3.x

解决方案


您正在尝试调用firstposition并且secondposition好像它们是变量,而不是函数。()如果您通过添加到每个代码将它们称为函数,那么您的代码将起作用。

file=open("../dataFiles/mbox-short.txt", mode='r')
line=file.readline()

def firstposition ():
    return int(line.find("@"))

def secondposition ():
    return int(line.find(" ", firstposition()))

while line != "":
    i=line[firstposition():secondposition()]
    print(i)
    line = file.readline()

file.close()

推荐阅读