繁体   English   中英

如何在 Python 3.8 中仅打印此 JSON object 中的名称

[英]How to print just the name in this JSON object in Python 3.8

前言 - 我正处于 python 知识的早期阶段,所以我可能不知道到底要谷歌什么。 一直在寻找最后一天左右的想法,但没有解决这个问题。

这是 object 示例:

"shipping_address": "John Doe\n234 NE Asdf St.\nAsdf Town, Oregon, 14423\nUnited States\n\n电话:555-555-2733\nPaypal 地址:asdf@example.com",

我如何只打印“John Doe”部分而不是信息的 rest? 当我尝试打印到“\”(减号)时,我似乎无法正常工作。 这是因为 \ 是运算符吗?

任何输入都会非常有帮助。

片段:

response = requests.get(url).json()
print('Number of orders: '+str(len(response['orders'])))
print()
for order in response['orders']:
    name = order['shipping_address']
    print(name)
    print()

我假设订单是一个字典,您已经在“shipping_address”下获得了我们需要检测的文本,对于地址,这些单词用“\n”字符分隔,如果这样的话,使用 split 方法真的很简单.

person_name = order['shipping_address'].split("\n")[0]

对于所有其他情况,如果送货地址没有特定的字符区分符,例如行尾 ("\n"),您可以使用 spacy NER 模块来检测人名。 如下所述。

import spacy
shipping_address =  "John Doe\n234 NE Asdf St.\nAsdf Town, Oregon, 14423\nUnited States\n\nPhone: 555-555-2733\nPaypal address: asdf@example.com"
nlp = spacy.load('en_core_web_sm')
doc = nlp(shipping_address)
person_name = [ ent for ent in doc.ents if ent.label_ == "PERSON" ]

打印(人名)

[约翰·多伊]

对于 spacy 安装请按照官方指南

您需要在换行符( \n )上拆分字符串。 一种方法是.split()方法,它返回在给定字符串上拆分的字符串列表。 例如:

x = 'This-is-an-example'
print(x.split('-'))
// Result: ['This', 'is', 'an', 'example']

您要做的是拆分换行符,并将该列表的第一个元素作为名称。 那将是:

response = requests.get(url).json()
print('Number of orders: '+str(len(response['orders'])))
print()
for order in response['orders']:
    shipping_address = order['shipping_address']
    name = shipping_address.split('\n')[0]
    print(name)
    print()

您可以尝试按换行符 ('\n') 拆分名称,并按索引访问 John Doe 部分。

response = requests.get(url).json()
print('Number of orders: '+str(len(response['orders'])))
print()
for order in response['orders']:
    name = order['shipping_address']
    print(name.split('\n')[0])
    print()

我认为您混淆了 '\'字符和 '\n'转义序列

这两个都代表一个字符。 '\' 表示您在键盘上按下\键时得到的实际反斜杠字符。

另一方面,'\n' 是换行符的转义序列,即当您在键盘上按Enter时获得的字符。

如果要获取字符串的第一行,则必须将字符串拆分直到第一个换行符而不是第一个反斜杠 你这样做:

order['shipping_address'].split('\n')[0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM