本文整理匯總了Python中json.items方法的典型用法代碼示例。如果您正苦於以下問題:Python json.items方法的具體用法?Python json.items怎麽用?Python json.items使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類json
的用法示例。
在下文中一共展示了json.items方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _get_entity_recursive
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def _get_entity_recursive(json, entity):
if not json:
return None
elif isinstance(json, dict):
for key, value in json.items():
if key == entity:
return value
# 'entities' and 'extended_entities' are wrappers in Twitter json
# structure that contain other Twitter objects. See:
# https://dev.twitter.com/overview/api/entities-in-twitter-objects
if key == 'entities' or key == 'extended_entities':
candidate = _get_entity_recursive(value, entity)
if candidate is not None:
return candidate
return None
elif isinstance(json, list):
for item in json:
candidate = _get_entity_recursive(item, entity)
if candidate is not None:
return candidate
return None
else:
return None
示例2: _write_to_file
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def _write_to_file(object_fields, items, entity_fields, writer):
if not items:
# it could be that the entity is just not present for the tweet
# e.g. tweet hashtag is always present, even as [], however
# tweet media may not be present
return
if isinstance(items, dict):
# this happens e.g. for "place" of a tweet
row = object_fields
# there might be composed keys in de list of required fields
entity_field_values = [x for x in entity_fields if not _is_composed_key(x)]
entity_field_composed = [x for x in entity_fields if _is_composed_key(x)]
for field in entity_field_values:
value = items[field]
if isinstance(value, list):
row += value
else:
row += [value]
# now check required dictionaries
for d in entity_field_composed:
kd, vd = _get_key_value_composed(d)
json_dict = items[kd]
if not isinstance(json_dict, dict):
raise RuntimeError("""Key {0} does not contain a dictionary
in the json file""".format(kd))
row += [json_dict[vd]]
writer.writerow(row)
return
# in general it is a list
for item in items:
row = object_fields + extract_fields(item, entity_fields)
writer.writerow(row)
示例3: _nix_eval_filter
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def _nix_eval_filter(json: Dict[str, Any]) -> List[Attr]:
# workaround https://github.com/NixOS/ofborg/issues/269
blacklist = set(
["tests.nixos-functions.nixos-test", "tests.nixos-functions.nixosTest-test"]
)
attr_by_path: Dict[str, Attr] = {}
broken = []
for name, props in json.items():
attr = Attr(
name=name,
exists=props["exists"],
broken=props["broken"],
blacklisted=name in blacklist,
path=props["path"],
drv_path=props["drvPath"],
)
if attr.path is not None:
other = attr_by_path.get(attr.path, None)
if other is None:
attr_by_path[attr.path] = attr
else:
if len(other.name) > len(attr.name):
attr_by_path[attr.path] = attr
attr.aliases.append(other.name)
else:
other.aliases.append(attr.name)
else:
broken.append(attr)
return list(attr_by_path.values()) + broken
示例4: remove_url_keys_from_json
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def remove_url_keys_from_json(json):
if isinstance(json, dict):
return {key: remove_url_keys_from_json(value)
for key, value in json.items()
if not key.endswith('url')}
elif isinstance(json, list):
return [remove_url_keys_from_json(value) for value in json]
else:
return json
示例5: _select_json_elements
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def _select_json_elements(self, keys, json):
"""
Returns a dict filtered down to include only the selected keys. Walks
paths to handle nested dicts
"""
ret = {}
for k, v in json.items():
if k in keys:
ret[k] = v
elif isinstance(v, dict):
v = self._select_json_elements(keys, v)
if v:
ret[k] = v
return ret
示例6: _write_to_file
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def _write_to_file(object_fields, items, entity_fields, writer):
if not items:
# it could be that the entity is just not present for the tweet
# e.g. tweet hashtag is always present, even as [], however
# tweet media may not be present
return
if isinstance(items, dict):
# this happens e.g. for "place" of a tweet
row = object_fields
# there might be composed keys in de list of required fields
entity_field_values = [x for x in entity_fields if not _is_composed_key(x)]
entity_field_composed = [x for x in entity_fields if _is_composed_key(x)]
for field in entity_field_values:
value = items[field]
if isinstance(value, list):
row += value
else:
row += [value]
# now check required dictionaries
for d in entity_field_composed:
kd, vd = _get_key_value_composed(d)
json_dict = items[kd]
if not isinstance(json_dict, dict):
raise RuntimeError(
"""Key {0} does not contain a dictionary
in the json file""".format(
kd
)
)
row += [json_dict[vd]]
writer.writerow(row)
return
# in general it is a list
for item in items:
row = object_fields + extract_fields(item, entity_fields)
writer.writerow(row)
示例7: json2csv_entities
# 需要導入模塊: import json [as 別名]
# 或者: from json import items [as 別名]
def json2csv_entities(tweets_file, outfile, main_fields, entity_type, entity_fields,
encoding='utf8', errors='replace', gzip_compress=False):
"""
Extract selected fields from a file of line-separated JSON tweets and
write to a file in CSV format.
This utility function allows a file of full Tweets to be easily converted
to a CSV file for easier processing of Twitter entities. For example, the
hashtags or media elements of a tweet can be extracted.
It returns one line per entity of a Tweet, e.g. if a tweet has two hashtags
there will be two lines in the output file, one per hashtag
:param tweets_file: the file-like object containing full Tweets
:param str outfile: The path of the text file where results should be\
written
:param list main_fields: The list of fields to be extracted from the main\
object, usually the tweet. Useful examples: 'id_str' for the tweetID. See\
<https://dev.twitter.com/overview/api/tweets> for a full list of fields.
e. g.: ['id_str'], ['id', 'text', 'favorite_count', 'retweet_count']
If `entity_type` is expressed with hierarchy, then it is the list of\
fields of the object that corresponds to the key of the entity_type,\
(e.g., for entity_type='user.urls', the fields in the main_fields list\
belong to the user object; for entity_type='place.bounding_box', the\
files in the main_field list belong to the place object of the tweet).
:param list entity_type: The name of the entity: 'hashtags', 'media',\
'urls' and 'user_mentions' for the tweet object. For a user object,\
this needs to be expressed with a hierarchy: `'user.urls'`. For the\
bounding box of the Tweet location, use `'place.bounding_box'`.
:param list entity_fields: The list of fields to be extracted from the\
entity. E.g. `['text']` (of the Tweet)
:param error: Behaviour for encoding errors, see\
https://docs.python.org/3/library/codecs.html#codec-base-classes
:param gzip_compress: if `True`, ouput files are compressed with gzip
"""
(writer, outf) = outf_writer_compat(outfile, encoding, errors, gzip_compress)
header = get_header_field_list(main_fields, entity_type, entity_fields)
writer.writerow(header)
for line in tweets_file:
tweet = json.loads(line)
if _is_composed_key(entity_type):
key, value = _get_key_value_composed(entity_type)
object_json = _get_entity_recursive(tweet, key)
if not object_json:
# this can happen in the case of "place"
continue
object_fields = extract_fields(object_json, main_fields)
items = _get_entity_recursive(object_json, value)
_write_to_file(object_fields, items, entity_fields, writer)
else:
tweet_fields = extract_fields(tweet, main_fields)
items = _get_entity_recursive(tweet, entity_type)
_write_to_file(tweet_fields, items, entity_fields, writer)
outf.close()