将字符串转换为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中的字符串列表的主要内容,如果未能解决你的问题,请参考以下文章