【发布时间】:2018-05-01 17:25:04
【问题描述】:
在我的主函数中,我有一个包含搜索值列表的元组。我正在尝试在数据数组中一一搜索这些值中的每一个。在我的主函数中,我将一个数据数组(从文本文件中提取)以及要搜索的特定值传递给我的搜索函数。
我的代码的精简版本如下。 .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()
【问题讨论】:
-
显示数据。当字符串作为参数传递与在函数外部使用时,功能上应该没有任何区别。更有可能的答案是数据与您的预期不同。不同的外壳,松散的空格/换行符。您可能会遗漏一些细微的差异。
-
另外,你永远不会打电话给
close。您只是在引用该函数。不是这里的问题,只是一个注释。 -
你遇到了什么错误?
-
您可能需要删除我添加井号的空格。根据编辑器的不同,我已经看到在方法名称和括号“中断”之间放置了一个空格。 line.startswith#(v) 我注意到您在使用 enumerate(data) 调用或 find_ends(data, v) 调用时没有空间......这可能只是原因
-
制作一个示例文件来测试它,您提供的代码似乎工作正常。仔细查看这个“精简”版本与您的原始版本之间的差异,以找出发生了哪些变化。您是否添加了退货声明?有没有你应该去掉的空白,比如
line.strip().startswith(v)?
标签: python python-3.6 startswith