Unicode逃脱误差python



我当前正在使用python的 timeit in Instoy库来获取代码小片段的执行时间。

我的代码: -

import timeit
print(timeit.timeit(setup='env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))

执行时上述代码产生Unicode Escape Error

错误堆栈: -

Traceback (most recent call last):
  File "D:/Users/apple/vul.py", line 3, in <module>
    print(timeit.timeit(setup='env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))
  File "C:UsersappleAppDataLocalProgramsPythonPython37-32libtimeit.py", line 232, in timeit
    return Timer(stmt, setup, timer, globals).timeit(number)
  File "C:UsersappleAppDataLocalProgramsPythonPython37-32libtimeit.py", line 109, in __init__
    compile(setup, dummy_src_name, "exec")
  File "<timeit-src>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

当字符串内部有一个逃生序列解释时,通常会产生此错误(通过单个,然后是字符(。但是就我而言,我已经使用 \(双反斜击(逃脱了字符串内的后斜线。

您已经正确诊断出了问题:字符串中的逃生序列解释。

您一次逃脱了后斜线。这意味着timeit在其setup参数中接收以下字符串:'env = "C:UsersMyName"',每个事件都有一个。当它执行字符串时,它会发现它认为是有问题的Unicode序列:'Users'

很容易修复:

print(timeit.timeit(setup=r'env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))

最新更新