将包含 Python 列表的字符串转换为 JavaScript 数组

3

我有这个字符串:

items = "['item1', 'item2']"

我需要它成为一个JavaScript数组,像这样:

items = ['item1', 'item2']

我尝试了这个方法,它可以工作:

items.replace("]","").replace("[","").replaceAll("'","").split(",");

我获得了预期的结果:

['item1', 'item2']

问题是:是否有更简单的方法来实现同样的效果?


7
最简单的方法是:eval(items) 或者 JSON.parse(items.replace(/'/g, '"')) - user5734311
1
eval 的必读文章:https://dev59.com/z3VC5IYBdhLWcg3wvT1a - Pranav Hosangadi
2
是的,不要使用 eval,但对于这种情况,JSON.parse 是正确的选择。 - Nisala
@MartinV 请在你有时间的时候检查一下我的解决方案。它使用正则表达式使替换更简单,然后使用 JSON.parse() 将最终结果解释为 JSON 数据。 - Brandon McConnell
@ChrisG eval(items) 是解决方案!谢谢! - Martin V
问题是:是否可以用更简单的方法来完成?如果您可以更改Python端,而不仅仅是将列表转换为字符串,请使用json.dumps() - tevemadar
1个回答

2
你可以使用正则表达式文本替换和 JSON.parse() 很简单地完成这个操作:

const items = "['item1', 'item2']";

const array = JSON.parse(items.replace(/'/g, '\"'));

console.log(array);

如果您想完全避免使用JSON.parse(),我们可以微调文本替换并像这样使用.split()方法:

const items = "['item1', 'item2']";

const array = items.replace(/\[|\]|\s|'/g,'').split(',');

console.log(array);


1
感谢@Brandon McConnell!你的回答。抱歉,但“items =”是变量赋值,我没有指定。 - Martin V
三个例子,但是没有一个与 OP 的实际输入数据匹配...!:D - user5734311
@MartinV 没问题!这会让事情更简单。我会进行更改并尽快更新我的答案。 - Brandon McConnell
@MartinV 根据您的澄清,我已经更正了我的解决方案。请在您有时间的时候检查一下。 - Brandon McConnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接