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

Python解析CSV生成新日志文件时遇语法错误求助

Python代码f-string语法错误排查与解决

问题场景

需要处理一个逗号分隔的CSV文件,提取其中特定行并生成指定格式的语句写入新文件。编写的Python代码预期生成类似force <PATH> = spi_bits[(NUM_OF_SPI_HALF0*chip) + 16];`的语句,但运行时第13行触发语法错误。

相关代码

import csv
import os

cdie_db_root_path = os.environ['CDIE_DB_ROOT']
verif_home_path = os.environ['VERIF_HOME']

with open(verif_home_path + "/gic/envir/testbench/al_gic_spi_forces.inc","w") as spi_forces:
    with open(cdie_db_root_path + "/Interrupts/verif/package_verif_signal_list.csv", "r") as fh:
        csv_reader = csv.reader(fh, delimiter=',')
        next(csv_reader) #first line is a comment
        for row in csv_reader:
          if (int(row[1]) > 14):
            spi_forces.write(f'force {row[3]} = spi_bits[(`NUM_OF_SPI_HALF0*chip) + {row[1]}];\n')

预期输出

force <PATH> = spi_bits[(`NUM_OF_SPI_HALF0*chip) + 16];
force <PATH> = spi_bits[(`NUM_OF_SPI_HALF0*chip) + 17];
force <PATH> = spi_bits[(`NUM_OF_SPI_HALF0*chip) + 18];
...

报错信息

File "bin/interrupts_parsing.py", line 13
    spi_forces.write(f'force {row[3]} = spi_bits[(`NUM_OF_SPI_HALF0*chip) + {row[1]}];\n')

错误原因

核心问题是使用的Python版本低于3.6:f-string(格式化字符串字面值)是Python 3.6才正式引入的语法特性,低版本Python无法识别该语法,直接抛出语法错误。

解决方案

方案1:升级Python版本

如果运行环境允许,直接将Python升级到3.6或更高版本,原代码的f-string语法即可正常运行,无需修改代码。

方案2:替换为兼容低版本的格式化方式

若无法升级Python,将第13行的f-string替换为str.format()方法(兼容性更好):

spi_forces.write('force {} = spi_bits[(`NUM_OF_SPI_HALF0*chip) + {}];\n'.format(row[3], row[1]))

也可以使用字符串拼接的方式(可读性稍弱):

spi_forces.write('force ' + row[3] + ' = spi_bits[(`NUM_OF_SPI_HALF0*chip) + ' + row[1] + '];\n')

修改后重新运行代码,即可生成符合预期的输出内容。

内容的提问来源于stack exchange,提问作者Yoav Reznik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:33:20