首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在timeit模块python中出现Unicode转义错误

在timeit模块python中出现Unicode转义错误
EN

Stack Overflow用户
提问于 2019-06-25 05:14:08
回答 1查看 104关注 0票数 0

我目前正在使用python的timeit内置库来获取小代码片段的执行时间。

我的代码:-

代码语言:javascript
复制
import timeit

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

上面的代码在执行时会生成Unicode Escape Error

错误堆栈:-

代码语言:javascript
复制
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:\Users\apple\AppData\Local\Programs\Python\Python37-32\lib\timeit.py", line 232, in timeit
    return Timer(stmt, setup, timer, globals).timeit(number)
  File "C:\Users\apple\AppData\Local\Programs\Python\Python37-32\lib\timeit.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

当字符串中存在转义序列解释(通过单个\后跟一个字符)时,通常会产生此错误。但在我的例子中,我已经使用\\(双反斜杠)转义了字符串中的反斜杠。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 06:22:58

您已经正确地诊断了问题:字符串中的转义序列解释。

您已经避开了反斜杠一次。这意味着timeit在其setup参数中接收以下字符串:'env = "C:\Users\MyName"',每次出现时都有一个\。当它执行该字符串时,它会找到它认为有问题的Unicode序列:'\Users'

它很容易修复:

代码语言:javascript
复制
print(timeit.timeit(setup=r'env = "C:\\Users\\MyName"', stmt='a = f"{env} is my username"'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56744027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档