在字符串中提取列表或元组

2024-03-29 07:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个通过以太网连接的外部设备获得输入,它传递了一些字符串类型的值,例如value = '(2,2)\n'。我想将这些值赋给一个列表或元组变量,例如final_value = (2,2)。 我使用的代码如下:

import socket
sock = socket.socket()
value =sock.recv(buffersize=2048)
formatted_value = eval(value)

我读到现在我用来获取列表的eval函数不是一个非常安全的方法,因为外部设备可能会传递一个危险的脚本。所以,我想知道是否有其他方法,类似于函数int(),可以用来从字符串中获取整数。在


Tags: 方法函数字符串代码import类型列表value
3条回答

使用astmodule literal_eval方法进行更安全的评估

import ast
formatted_value = ast.literal_eval(value)

好吧,给你另一种方法。在

s = '(2, 2)\n'
s = s.strip()
if s.startswith('(') and s.endswith(')'):
    tup = tuple(int(i) for i in s[1:-1].split(','))
    print(tup)

或者如果你想要一份名单

^{pr2}$

如果您知道输入包含一个元组

from ast import literal_eval as make_tuple
make_tuple(value)

相关问题 更多 >