簡體   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