一个非常幼稚的问题,但是否有一种强大或更好的方法来进行跟踪。说它实际上与json无关。
假设我有列表(从文件中读取)
string_list = [ "foo",1,None, "null","[]","bar"]
现在,null and []
基本上等同于 null 但不同的数据结构对“无”有不同的解释??正确的?
因此,与其为所有这些规则编写正则表达式.. 有没有更好的方法将“null”、“[]”等转换为 None.. ??
谢谢
一个非常幼稚的问题,但是否有一种强大或更好的方法来进行跟踪。说它实际上与json无关。
假设我有列表(从文件中读取)
string_list = [ "foo",1,None, "null","[]","bar"]
现在,null and []
基本上等同于 null 但不同的数据结构对“无”有不同的解释??正确的?
因此,与其为所有这些规则编写正则表达式.. 有没有更好的方法将“null”、“[]”等转换为 None.. ??
谢谢
定义一组应该被替换的值None
并使用列表推导来“替换”它们:
>>> string_list = [ "foo",1,None, "null","[]","bar"]
>>> none_items = {"null", "[]"} # or set(("null", "[]"))
>>> [None if item in none_items else item for item in string_list]
['foo', 1, None, None, None, 'bar']
或者,使用map()
:
>>> map(lambda x: None if x in none_items else x, string_list)
['foo', 1, None, None, None, 'bar']
set
由于 O(1) 查找而使用。
1)你不应该将任何东西转换为无。
2)您要做的第一件事是转换为json。json 模块会将 null 转换为 None,因此您不必担心 null。空的 json 字符串、数组和对象,将被转换为空的 python 字符串、列表和字典,所以你根本不用处理字符串。
3)然后如果你想过滤掉空对象,你可以这样做:
import json
my_data = json.loads("""
[
"hello",
"",
[],
{},
[1, 2, 3],
{"a": 1, "b": 2}
]
""")
print(my_data)
print([x for x in my_data if x])
--output:--
['hello', '', [], {}, [1, 2, 3], {'a': 1, 'b': 2}]
['hello', [1, 2, 3], {'a': 1, 'b': 2}]
空对象(包括 0)评估为 False。
你可以试试:
string_list = [ "foo",1,None, "null","[]","bar"]
nones = [ "null", "[]" ]
print([None if s in nones else s for s in string_list])