gpt4 book ai didi

rust - 怎么把PyObjectRef转换成PyString?

转载 作者:行者123 更新时间:2023-12-03 11:40:19 25 4
gpt4 key购买 nike

我有一个接受Python列表的函数。我希望列表由字符串组成。如何提取它们?

fn f(list: &PyList) -> PyResult<SomeClass> {
for obj in list.iter() {
let rust_string = PyString::from_object(obj, "ASCII", "strict")?.to_string()?;
// fails with `TypeError: decoding str is not supported`

if PyString::is_exact_instance(obj) {
let py_str: PyString = unsafe {std::mem::transmute(str)};
let rust_str = py_str.to_string()?;
// panics with failed assertion in PyString.as_bytes()
}
}
// ...
}

// Python call site
f(["string1", "string2"])
软件版本:Python 3.7,每晚的Rust 1.33.0,pyo3 0.5.2。

最佳答案

fn f(list: &PyList) -> PyResult<SomeClass> {
for i in list.iter() {
let mut str_2 = match i.extract() {
Ok(val) =>{
val
},
Err(why) => {
panic!("{:}", why);
String::new()
}
};

println!("{}", str_2);
}
// ...
}
我猜这是导致解包不起作用的答案,而python列表可能包含数字,字符串甚至字典之类的任何对象。对于这种情况,故障保护将检查pyo3包含的每种数据类型。

关于rust - 怎么把PyObjectRef转换成PyString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53950390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com