You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打开.csv文件时出现无效语法错误求助

解决你的SyntaxError问题(附代码修正)

嘿,我太懂这种照着示例写代码却报错的挫败感了!别盯着open()那一行纠结——Python的语法错误提示有时候会“指错地方”,真正的问题出在后面的字符串格式化写法,还有一个容易忽略的文件模式逻辑错误。

问题1:错误的字符串格式化(真正触发SyntaxError的原因)

你代码里的print语句用了类似Python 3.6+的f-string语法,但既没加f前缀,写法也不符合规范,导致Python解析时出错,错误提示却指向了前面的open()行(这是Python解析器的小坑)。

比如你写的:

print('column headers are {", ".join(row)}')

这是错误的,正确的f-string写法需要在字符串前加f,把表达式放在{}里:

print(f'column headers are {", ".join(row)}')

另外两行print也犯了同样的错误,都需要补加f前缀。

问题2:文件模式的逻辑错误

你用mode='w'(写入模式)打开文件,但紧接着用csv.reader去读取它——写入模式下的文件是无法读取的,会导致后续运行报错,应该改成mode='r'(只读模式)。

修正后的完整代码

import csv
# 改用只读模式打开文件
with open('major_outages_csv.csv', mode='r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            # 正确使用f-string
            print(f'column headers are {", ".join(row)}')
            line_count += 1
        else:
            print(f'\t{row[0]} is the number of customers out and {row[1]} is the feeder.')
            line_count += 1
    print(f'processed {line_count} lines.')

如果你用的是Python 2(不支持f-string)

如果你的运行环境是Python 2,那得换成str.format()的写法,代码改成这样:

import csv
with open('major_outages_csv.csv', mode='r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print('column headers are {0}'.format(", ".join(row)))
            line_count += 1
        else:
            print('\t{0} is the number of customers out and {1} is the feeder.'.format(row[0], row[1]))
            line_count += 1
    print('processed {0} lines.'.format(line_count))

内容的提问来源于stack exchange,提问作者Glenn Minix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:43:09