gpt4 book ai didi

python - for循环函数调用文件解析

转载 作者:行者123 更新时间:2023-12-01 05:41:47 25 4
gpt4 key购买 nike

我认识到这段代码效率极低。

我在这里完全不知所措,我计划删除该函数并仅使 main 中的代码程序化。但我希望有人能解释我在这里看到的内容。 main() 中的循环运行并调用 matchName()。 matchName() 执行它的循环,当它应该返回下一个“vtRow”时,它只是停止执行。因此输出是 vtData 的第一条记录和 adData 的每条记录。

import csv, re

def main():
#1st word
oneWord = re.compile( '\A([\w]+)' )
#1st 3
first3 = re.compile( '\A([\w]{3})' )
#last 3
last3 = re.compile( '(?=([\w]{3})$)' )

mArray = [ oneWord, first3, last3 ]
adFile = open('adData.csv', 'rb')
adFields = ('lName','fName','cNum','addy','city','state','zip','phone','sex')
adData = csv.reader(adFile, dialect='excel')

vtFile = open('data360.csv','rb')
vtFields = ('ref','fName','lName')
vtData = csv.reader(vtFile, dialect='excel')

for vtRow in vtData:
matchName(vtRow, adData, mArray) # appears that this runs once and exits

def matchName(curVtRow, adData, mArr):
lName = curVtRow[4].lower()
fName = curVtRow[3].lower()
Posib = []

for row in adData:
cName = row[0].lower()
print "vt " + lName + " ; ad " + cName
return 1

if __name__ == "__main__":
main()

最佳答案

问题在于,使用 adData 进行循环会导致读取 adFile,因此在第一次调用 matchName() 后,该文件将已被一路读取,因此 adData 不会被循环,因为 adData.next() 不会产生任何结果(因此 print 语句将不会被执行)。我建议在调用 matchName() 之后放置 adFile.seek(0)。请注意,仅重新创建 adData 是行不通的;我最近发现 csv 读取器会更新其底层对象的文件位置,而不是自行跟踪它。

关于python - for循环函数调用文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com