Python中将字符串形式数组转为数组及Unicode数组转换问询
嘿,我来帮你搞定这两个Python字符串转换的问题~
1. 将字符串形式的字符串数组转换为数组
这里得分情况讨论,常见的两种场景我都给你列出来:
- 场景1:字符串本身是标准的数组/元组格式(带引号)
比如你的输入是类似s = "['apple', 'banana', 'cherry']"或者s = "(123, 'test', True)",这种情况最安全的方法是用ast.literal_eval(),它比直接用eval()更安全,不会执行恶意代码:
import ast str_array = "['apple', 'banana', 'cherry']" real_array = ast.literal_eval(str_array) print(real_array) # 输出: ['apple', 'banana', 'cherry']
- 场景2:字符串是无引号的元素用逗号分隔(带括号)
比如类似你第二个问题里的格式,那可以直接用字符串处理方法:先去掉首尾的括号,按逗号分割,再清理每个元素的空格,最后转成你需要的数组/元组:
str_data = "(apple, banana, cherry)" real_array = [item.strip() for item in str_data.strip('()').split(',')] print(real_array) # 输出: ['apple', 'banana', 'cherry']
2. 处理Unicode格式输入转目标元组
针对你给出的输入 p = u'(abcd, pqrs, fghj, mjki, loki)',要得到 output = ('abcd', 'pqrs', 'fghj', 'mjki', 'loki'),直接用字符串处理就能搞定,步骤很清晰:
- 用
strip('()')去掉首尾的括号 - 用
split(',')按逗号分割成元素列表 - 对每个元素用
strip()去掉前后空格 - 最后用
tuple()转成元组
代码实现如下:
p = u'(abcd, pqrs, fghj, mjki, loki)' output = tuple(item.strip() for item in p.strip('()').split(',')) print(output) # 输出: ('abcd', 'pqrs', 'fghj', 'mjki', 'loki')
这里要注意:因为原输入里的元素没有引号,所以直接处理后每个元素会被当作字符串类型,正好符合你的需求。如果用ast.literal_eval()的话会报错,因为它会把abcd当作变量名而不是字符串,所以这种场景字符串处理是最合适的。
内容的提问来源于stack exchange,提问作者Sumit Waghmare
相关产品推荐
相关产品推荐

