无法将一组值解析为字符串列表

所以我需要在Python中解析一组值,并对它们进行独热编码以用于特征工程。以下是我特征集中的’amenities’列的一个样本的值。

x = {"Wireless Internet","Air conditioning",Kitchen,Heating,"Family/kid friendly",Essentials,"Hair dryer",Iron,"translation missing: en.hosting_amenity_50"}

问题在于这里既有花括号'{}’,又有一些值应该用双引号引起来但实际上没有(参见上例中的Kitchen, Heating)。如果我能将上述内容转换为字符串,我知道如何去掉括号并将其分割成列表。

我需要将上述内容转换为一个项目列表,其中那些没有用双引号引起来的值变成字符串。


回答:

输入数据看起来已损坏。然而,最简单的方法是去掉双引号,然后按逗号分割(我已经略过了花括号部分,因为它们也很容易去掉):

s = '"Wireless Internet","Air conditioning",Kitchen,Heating,"Family/kid friendly",Essentials,"Hair dryer",Iron,"translation missing: en.hosting_amenity_50"'
print(s.replace('"','').split(","))

结果:

['Wireless Internet', 'Air conditioning', 'Kitchen', 'Heating', 'Family/kid friendly', 'Essentials', 'Hair dryer', 'Iron', 'translation missing: en.hosting_amenity_50']

当然,如果数据中包含逗号,你就麻烦了,因为没有办法区分字段中的逗号和分隔符逗号,因为缺少引号…(否则使用ast.literal_eval解析将非常简单)

完全去掉花括号需要做一些稍微复杂的工作,但也是可行的:

s = 'x = {"Wireless Internet","Air conditioning",Kitchen,Heating,"Family/kid friendly",Essentials,"Hair dryer",Iron,"translation missing: en.hosting_amenity_50"}'
print(s.replace('"','').split("{")[1].rstrip('}').split(","))

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注