【问题标题】:Problem using exec() function with code read in from csv使用 exec() 函数和从 csv 读取的代码时出现问题
【发布时间】:2021-11-09 20:29:57
【问题描述】:

我正在尝试将 csv 文件中的多个语句传递给 Python,并使用 exec() 函数执行它们。我目前遇到一个问题,我可以将一个语句作为字符串变量传递给 exec() 函数,但是当我使用 DataFrames 从 csv 文件中读取相同的值时出现错误。

有效的代码:

program = 'a = 5\nb=10\nprint("Sum =", a+b)' 
exec(program)

不起作用的代码:

trans = df.loc[df['ldms_name'] == row[2]]['translation'].item()

for i in trans.split(';'):
    exec(i)

csv 中的翻译值为:

a = 5\nb=10\nprint("Sum =", a+b)

我得到的错误是:

SyntaxError: unexpected character after line continuation character

我尝试了几种不同的引用方法。

【问题讨论】:

  • 真的必须提供minimal reproducible example。您提供的字符串不会引发该错误。
  • 当反斜杠 '\' 后面没有换行符 '\n' 时,可能会发生换行错误。这可能会帮助您缩小问题范围。此外,如果您将代码存储在 csv 文件中,则不能在代码中使用逗号,例如print(a,b)

标签: python dataframe csv exec quoting


【解决方案1】:

当您从 文件中读取字符序列a = 5\nb=10\nprint("Sum =", a+b) 时,\n 没有(与出现在普通字符串文字中时不同)翻译成换行符字符,因此它给出的值与文字中的值不同。您可以通过附加 .replace(r"\n", '\n') e 来纠正此问题。 G。在您的代码中的trans 分配结束时

【讨论】:

  • 非常感谢阿玛利。这解决了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 2023-04-05
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多