在我的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()
答案 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()