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
相关产品推荐
相关产品推荐

