Python 循环订单问题
希望这将是我今天的最后一个问题: 我有一个csv文件,其中包含很多行数据,例如:Python 循环订单问题,python,loops,Python,Loops,希望这将是我今天的最后一个问题: 我有一个csv文件,其中包含很多行数据,例如: {"first_name":"John","last_name":"Smith","age":30} {"first_name":"Tim","last_name":"Johnson","age":34} 我正在使用此代码从文件中获取名字: with open("c:\\newgood.csv", "r") as fo: for line in fo: match = re.search(
{"first_name":"John","last_name":"Smith","age":30}
{"first_name":"Tim","last_name":"Johnson","age":34}
我正在使用此代码从文件中获取名字:
with open("c:\\newgood.csv", "r") as fo:
for line in fo:
match = re.search('first_name"(.*?)"(.*?)"', line)
if match:
results = match.group(2)
else:
print('None')
print results
这是有效的,除了每次我碰到一行没有名字的行时,它会通过循环返回,无法正确打印。例如,文件中的“我的名字”记录包括:
约翰·蒂姆·罗布·洛里·梅尔无唱片无唱片卡莉·特雷弗
当我使用上述代码时,我得到:
约翰·蒂姆·罗布·洛里·梅尔·梅尔·梅尔·梅尔·梅尔·梅尔·凯莉·特雷弗
如何更正上面的代码,使其在没有名字的情况下遍历行并打印none,而不是像现在这样错误地循环
我真的只需要知道如何让上面的代码正确地循环行,而不是因为其他因素而尝试不同的方法。谢谢 您应该用做作的方式替换else中的print语句:
with open("c:\\newgood.csv", "r") as fo:
for line in fo:
match = re.search('first_name"(.*?)"(.*?)"', line)
if match:
results = match.group(2)
else:
results = 'None'
print results
解释
在代码中,如果没有找到名字,则在离开else块后打印“None”。正当但是,解释器点击了打印结果行,但对他来说,最后找到的结果是前一行的结果,所以它重复了前一行的结果,在你的例子中是Mel
因此,您需要在每个循环中更改结果,以确保只打印第一个名称或“无”字符串。您应该用矫揉造作的方式替换else中的print语句:
with open("c:\\newgood.csv", "r") as fo:
for line in fo:
match = re.search('first_name"(.*?)"(.*?)"', line)
if match:
results = match.group(2)
else:
results = 'None'
print results
解释
在代码中,如果没有找到名字,则在离开else块后打印“None”。正当但是,解释器点击了打印结果行,但对他来说,最后找到的结果是前一行的结果,所以它重复了前一行的结果,在你的例子中是Mel
因此,您需要更改每个循环的结果,以确保只打印第一个名称或“无”字符串。每次循环重复时,都会执行打印结果。由于只更改if子句中结果的值,因此只要当前输入不包含名称,就会看到名称重复。每次循环重复时都会执行打印结果。由于只更改if子句中results的值,因此只要当前输入不包含名称,就会看到名称重复出现。我建议使用调试器逐步检查代码。您将看到每次循环迭代时都会执行打印结果。这解释了您看到的行为。它看起来只是一个循环顺序问题,因为您打印结果,即使它没有被设置,但它找不到任何东西。打印结果应在结果=匹配之后。。。if的第一个子句中的语句。这不是基于你之前的问题吗。。。如果这个问题解决了,你就可以把上面的内容转换成字典,如果名字不符合字典的要求,你就不能这样做吗?在我看到他编辑字典之前,我用了最后一个问题的答案。我的时间有点紧,不过我也会看看。现在,我已按正确顺序获得了所需的所有数据:我建议使用调试器逐步检查代码。您将看到每次循环迭代时都会执行打印结果。这解释了您看到的行为。它看起来只是一个循环顺序问题,因为您打印结果,即使它没有被设置,但它找不到任何东西。打印结果应在结果=匹配之后。。。if的第一个子句中的语句。这不是基于你之前的问题吗。。。如果这个问题解决了,你就可以把上面的内容转换成字典,如果名字不符合字典的要求,你就不能这样做吗?在我看到他编辑字典之前,我用了最后一个问题的答案。我的时间有点紧,不过我也会看看。现在,我已按正确顺序获得了所需的所有数据: