我有一个表单的数千个元素的列表,如下所示:
pixels = ['(112, 37, 137, 255)', '(129, 39, 145, 255)', '(125, 036, 138, 255)' ...]
我正在尝试使用 ast.literal_eval
将这些字符串元素转换为元组,但在遇到诸如前导零之类的事情时(例如,在显示的第三个元组字符串中)出现错误 语法错误: token 无效
。
pixels = [ast.literal_eval(pixel) for pixel in pixels]
处理此类事情并将此字符串列表评估为元组列表的好方法是什么?
最佳答案
使用re
模块。
>>> import re
>>> import ast
>>> pixels = ['(112, 37, 137, 255)', '(129, 39, 145, 255)', '(125, 036, 138, 255)']
>>> [ast.literal_eval(re.sub(r'\b0+', '', pixel)) for pixel in pixels]
[(112, 37, 137, 255), (129, 39, 145, 255), (125, 36, 138, 255)]
re.sub(r'\b0+', '', pixel)
有助于删除前导零。 \b
在单词字符和非单词字符之间匹配,反之亦然,因此这里必须在零之前和空格或 (
符号之后存在单词边界.
更新:
>>> pixels = ['(0, 0, 0, 255)', '(129, 39, 145, 255)', '(125, 036, 138, 255)']
>>> [ast.literal_eval(re.sub(r'\b0+\B', '', pixel)) for pixel in pixels]
[(0, 0, 0, 255), (129, 39, 145, 255), (125, 36, 138, 255)]
关于python - 如何将字符串列表评估为 Python 中的元组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009918/