2024-04-25 20:30:19 发布
网友
我有一个字符串的形式:
integer,integer,以逗号分隔的字符串列表,整数
integer
例如:
"0, 0, ['REFERENCED', 'UPTODATE', 'LRU'], 1"
我想返回这个子字符串['REFERENCED', 'UPTODATE', 'LRU']
['REFERENCED', 'UPTODATE', 'LRU']
我想过用split(", ")然后把东西连接在一起,但那太复杂了。如何使用regex实现这一点?你知道吗
split(", ")
不需要正则表达式。将字符串用括号括起来,使其成为列表的字符串表示形式,然后使用ast.literal_eval将其转换为实际列表。你知道吗
ast.literal_eval
import ast s = "0, 0, ['REFERENCED', 'UPTODATE', 'LRU'], 1" outer_list = ast.literal_eval('[' + s + ']') inner_list = outer_list[2] print(inner_list)
你可能想用eval而不是ast.literal_eval。抵制诱惑。使用eval是不安全的,因为它会计算任何Python表达式,即使它包含一些讨厌的东西,比如从硬盘删除文件的指令。你可以毫无恐惧地使用ast.literal_eval,因为它only parses strings, numbers, tuples, lists, dicts, booleans, and ^{}。你知道吗
eval
只需编写一个正则表达式来捕获由[、任意字符和]组成的组。你知道吗
[
]
>>> import re >>> s = "0, 0, ['REFERENCED', 'UPTODATE', 'LRU'], 1" >>> re.search(r'(\[.*\])', s).group(1) "['REFERENCED', 'UPTODATE', 'LRU']"
如果输入的结构确实如此良好,那么可以使用ast.literal_eval:
>>> import ast >>> ast.literal_eval(s)[2] ['REFERENCED', 'UPTODATE', 'LRU']
安全地计算包含python文本的字符串,并从tuple中提取第三个元素。你知道吗
tuple
s = "0, 0, ['REFERENCED', 'UPTODATE', 'LRU'], 1" start = s.find("[") end = s.rfind("]") print(s[start:end+1]) ['REFERENCED', 'UPTODATE', 'LRU']
不需要正则表达式。将字符串用括号括起来,使其成为列表的字符串表示形式,然后使用
ast.literal_eval
将其转换为实际列表。你知道吗你可能想用} 。你知道吗
eval
而不是ast.literal_eval
。抵制诱惑。使用eval
是不安全的,因为它会计算任何Python表达式,即使它包含一些讨厌的东西,比如从硬盘删除文件的指令。你可以毫无恐惧地使用ast.literal_eval
,因为它only parses strings, numbers, tuples, lists, dicts, booleans, and ^{只需编写一个正则表达式来捕获由
[
、任意字符和]
组成的组。你知道吗如果输入的结构确实如此良好,那么可以使用
ast.literal_eval
:安全地计算包含python文本的字符串,并从
tuple
中提取第三个元素。你知道吗相关问题 更多 >
编程相关推荐