下面几行是我在终端上的所有代码,所以我不认为是漏掉了括号.此外,print()也不在第6行,所以我非常困惑.我使用的是Python3.

这是遇到语法错误的代码:

import re
fhand = open("regex_sum_42.txt")

sum = 0
for line in fhand:
    x = re.findall('[0-9]+', line)
    for word in x:
        sum = sum + int(word)
        
print(sum)

返回的错误消息如下:

  File "<stdin>", line 6
    print(sum)
    ^^^^^
SyntaxError: invalid syntax

有人能告诉我我做错了什么吗?我对Python非常陌生,刚刚开始使用终端运行我的Python代码.我的终端上的命令有问题吗?

Last login: Fri Apr 21 13:21:03 on ttys001

evonneni@Evonnes-MacBook-Pro ~ % cd desktop

evonneni@Evonnes-MacBook-Pro desktop % cd py4e

evonneni@Evonnes-MacBook-Pro py4e % pwd

/Users/evonneni/desktop/py4e

evonneni@Evonnes-MacBook-Pro py4e % python3

Python 3.11.2 (v3.11.2:878ead1ac1, Feb  7 2023, 10:02:41) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

推荐答案

我想我找到了重现错误的方法.这样你就能解决你的问题了.但我不知道为什么这是一个错误.

如果打印前有缩进的空行或没有行,则打印将失败.

因此,移除它将解决问题:

import re
fhand = open("regex_sum_42.txt")

sum = 0
for line in fhand:
    x = re.findall('[0-9]+', line)
    for word in x:
        sum = sum + int(word)
        # <- Empty this line
print(sum)

因此,您的代码将如下所示:

import re
fhand = open("regex_sum_42.txt")

sum = 0
for line in fhand:
    x = re.findall('[0-9]+', line)
    for word in x:
        sum = sum + int(word)

#^ this line is empty
print(sum)

请注意,下面的代码也会失败:

import re
fhand = open("regex_sum_42.txt")

sum = 0
for line in fhand:
    x = re.findall('[0-9]+', line)
    for word in x:
        sum = sum + int(word)
print(sum)

告示

我在Windows(Conda)、Linux(WSL)和POPO(Conda)上测试了它.

错误行不必是print行.任何一条线路都会失败.

我为测试写了一个简单的脚本,它也失败了.所以这与您的代码无关.You need a blank, unintended line between your indented and unintended lines.

测试脚本:

x = 0
for i in range(22):
    x += i
    
print(x)

也失败了.

混乱

当代码从多缩进行返回到较低的缩进时,不会发生相同的错误.

例如,在看到缩进后需要一个空行后,我认为下面的代码在x += i之前都失败了.

代码1:

x = 0
for i in range(22):
    if x==1:
        print("ONE")
        # <- There is a line
    x += i

print(x)

代码2:

x = 0
for i in range(22):
    if x==1:
        print("ONE")
    x += i

print(x)

但事实并非如此.解释器清楚地知道if块已经结束,并解析代码.

TL;DR

在最后一个缩进行和打印之间留一个空行.

Python相关问答推荐

将每个关键字值对转换为pyspark中的Intramame列

Pandas基于另一列的价值的新列

X射线扫描显示Docker中的pip漏洞,尽管图像中未安装pip

带有计数值的Pandas数据帧

如何以实现以下所述的预期行为的方式添加两只Pandas pyramme

使用decorator 重复超载

使用decorator 自动继承父类

将numpy数组与空数组相加

绘制系列时如何反转轴?

查找下一个值=实际值加上使用极点的50%

无法使用equals_html从网址获取全文

使用mySQL的SQlalchemy过滤重叠时间段

如何删除索引过go 的lexsort深度可能会影响性能?' &>

运行终端命令时出现问题:pip start anonymous"

如何制作10,000年及以后的日期时间对象?

计算每个IP的平均值

在Django admin中自动完成相关字段筛选

Python中的变量每次增加超过1

Python Pandas获取层次路径直到顶层管理

幂集,其中每个元素可以是正或负""""