我有一个从csv文件中提取的字符串,格式如下:
str = "[point, contextual, point]"
我要做的是把它转换成一个格式为
的列表str = ["point", "contextual", "point"]
我该怎么做?我尝试了json.loads(str)
,但我得到了错误:
json.decoder.JSONDecodeError: expected value: line 1 column 2 (char 1)
你可以使用:
my_str = "[point, contextual, point]"
my_str[1:-1].split(', ') # remove first and last characters ([]) and split on ", "
NB。不要使用str
作为变量名,这会覆盖str
内装式
您可以使用这个表达式:str[1:-1].split(", ")
顺便说一下,不建议给变量指定python类型的名称。
我建议你使用yaml:
import yaml
s = "[point, contextual, point]"
s = yaml.load(s, Loader=yaml.FullLoader)
print(s)
['point', 'contextual', 'point']
注意:
yaml是一个第三方模块,安装它做(在命令行):
pip install pyyaml
上面代码片段的yaml版本是5.4.1
因为这不是一个有效的JSON字符串,json.loads
不起作用。您需要手动执行,并且您不能使用json
模块用于您拥有的字符串。
st = "[point, contextual, point]"
lst = st[1:-1].split(', ')
另外,不要使用str
作为变量:那是内置的
试试下面的代码:
string = "[point, contextual, point]"
print(string[1:-1].split(', '))
输出:
['point', 'contextual', 'point']
告诉我你是否可以…
你可以试试:
>>> 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']