Python"始于" string是传递给函数的变量时不工作

时间:2018-05-01 17:25:05

标签: python python-3.6 startswith

在我的main函数中,我有一个包含搜索值列表的元组。我试图逐个搜索数据数组中的每个值。在我的main函数中,我将数据数组(从文本文件中提取)与要搜索的特定值一起传递给我的搜索函数。

我的代码的精简版本如下。 .startswith在通过" v"传递给函数时找不到字符串。如果我手动定义字符串,但它可以正常工作。我已经检查了字符串多种方法来验证它是一个字符串,是正确的长度,没有丢失的字符等,并且无法找到任何问题。

有什么想法吗?

def find_ends(data, v):

    for line_no, line in enumerate(data):
        if line.startswith (v):
            start = line_no
    return start


def main():

    fr =open('filename', 'r')
    data = fr.readlines()
    fr.close

    arraynames = ["TOPOGRAPHY:", "XCOORD:"]

    for v in arraynames:
        start = find_ends(data, v)

    return

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

感谢所有有用的评论。像往常一样,代码似乎开始工作,不知道为什么。这是最终的代码,也许有人可以发现发生了什么!

数据如下所示。该脚本查找包含关键字的行以及其下方对应的行/值的数量。然后,脚本确定文件/数组中的相关起始行和结束行,稍后需要将其复制并将此信息返回给主函数。

TOPOGRAPHY: 25  
0.000
0.000
0.000
0.000
...
XCOORD: 25
0.000
2.500
5.0
...
...
def find_ends(data, v):

    for line_no, line in enumerate(data):
        if line.startswith (v):
            parts = line.split()
            start = line_no
            records = int(parts[1])
            end = line_no + records
    print(start, end, records)      
    return start, end, records

def main():

    fr = open('file', 'r')
    data = fr.readlines()
    fr.close

    arraynames = ["TOPOGRAPHY:", "XCOORD:"]

    for v in arraynames:
        start, end , records = find_ends(data, v)  
        print(start, end, records)  


if __name__ == '__main__':
    main()