将字符串转换为python中的字符串列表

Posted

技术标签:

【中文标题】将字符串转换为python中的字符串列表【英文标题】:Convert string to list of strings in python 【发布时间】:2021-12-04 21:16:25 【问题描述】:

我有一个从 .csv 中提取的字符串,格式如下:

str = "[point, contextual, point]"

我想做的是将它转换为格式的列表:

str = ["point", "contextual", "point"]

我该怎么做?我尝试使用json.loads(str),但出现错误:

json.decoder.JSONDecodeError:预期值:第 1 行第 2 列(字符 1)

【问题讨论】:

一般来说,最好不要命名str,因为这是内置字符串类型的名称。 参考以下链接获取指南:***.com/questions/1894269/… 【参考方案1】:

你可以使用:

my_str = "[point, contextual, point]"
my_str[1:-1].split(', ') # remove first and last characters ([]) and split on ", "

注意。不要使用str 作为变量名,这会覆盖str 内置

【讨论】:

如果输入有很多空格,则使用re.split,\s*作为分隔符【参考方案2】:

试试这个代码:

string = "[point, contextual, point]"
print(string[1:-1].split(', '))

输出:

['point', 'contextual', 'point']

告诉我是否适合你...

【讨论】:

理解的意义何在? split 已经返回一个列表【参考方案3】:

你可以使用这个表达式:str[1:-1].split(", ")

顺便说一句,不建议给变量指定python类型的名称。

【讨论】:

【参考方案4】:

我建议你使用yaml:

import yaml
s = "[point, contextual, point]"
s = yaml.load(s, Loader=yaml.FullLoader)
print(s)

输出

['point', 'contextual', 'point']

注意:

yaml 是安装它的第三方模块(在命令行):

pip install pyyaml 

上面代码sn-p的yaml版本是5.4.1

【讨论】:

AttributeError: 模块 'yaml' 没有属性 'FullLoader' 你的 GhostOps 版本是什么? 我的是3.13,你如何更新它?它在 pypi.org 中的名称是什么?对不起,因为我从来没有使用过 yaml tho @GhostOps 更新了答案,如果你已经安装了,也许你必须使用 pip install --upgrade pyyaml【参考方案5】:

因为这不是有效的 JSON 字符串,json.loads 不起作用。您需要手动完成,并且不能将json 模块用于您拥有的字符串。

st = "[point, contextual, point]"
lst = st[1:-1].split(', ')

附带说明,不要将 str 用作变量:这是内置的

【讨论】:

【参考方案6】:

你可以试试这个:

>>> st = "[point, contextual, point]"
>>> st[1:-1]
[point, contextual, point]

>>> st[1:-1].split(',')
['point', ' contextual', ' point'] # <- you have space

>>> list(map(lambda x: x.strip(), st[1:-1].split(',')))
['point', 'contextual', 'point']

为什么不split(', ')

>>> st = "[point,   contextual,     point]"
>>> st[1:-1].split(', ') 
['point', '  contextual', '    point']

>>> list(map(lambda x: x.strip(), st[1:-1].split(',')))
['point', 'contextual', 'point']

【讨论】:

为什么不在', ' 上拆分呢? @HenryEcker 已编辑答案

以上是关于将字符串转换为python中的字符串列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将逗号分隔的字符串转换为 Python 中的列表?

将逗号分隔的字符串转换为Python中的列表

Python将列表中的字符串转换为数字

将列表中的所有字符串转换为int

在python中,如何将一个字符串中的小写字母全部转换为大写?

将二维列表中的字符转换为int值python