我正在嘗試回傳 3 個值(州、大小、部門)。您將在下面的代碼中看到,如果狀態是 1 個單詞“Pennsylvania”,但如果它是 2 個單詞“New York”則不會。您可以注釋掉 New York 并取消注釋 PA 以查看它是否有效。我嘗試使用帶有字串拆分的 if-else。
import json
def lambda_handler(event, context):
print('## EVENT')
print(event)
#salesoutput=event['Details']['ContactData']['Attributes'].get('salesoutput',"Not Available")
salesoutput= "New York 15 Nuts"
#salesoutput= "Pennsylvania 15 Nuts"
if len(salesoutput.split()) > 3:
prestate1 = salesoutput.split(' ')[0]
prestate2 = salesoutput.split(' ')[1]
State = prestate1 " " prestate2
Size = salesoutput.split(' ')[2]
Department = salesoutput.split(' ')[3]
# print("State:",State,"\nDistrict Size:",Size,"\nDepartment:",Department)
else:
State = salesoutput.split(' ')[0]
Size = salesoutput.split(' ')[1]
Department = salesoutput.split(' ')[2]
# print("State:",State,"\nDistrict Size:",Size,"\nDepartment:",Department)
def describe(Response):
return State(Response), District(Response), Size(Response)
uj5u.com熱心網友回復:
如果您相當確定輸入格式,為什么不直接使用正則運算式呢?
import re
def lambda_handler(event, context):
salesoutput= "New York 15 Nuts"
pattern = re.compile(r'([\w\s] )\s(\d{1,})\s([\w\s] )')
result = pattern.search(salesoutput)
State, Size, Department = result.groups()
print("State:",State,"\nDistrict Size:",Size,"\nDepartment:",Department)
# TODO implement
return {
"State":State,
"Size":Size,
"Department": Department
}
復制
uj5u.com熱心網友回復:
s1 = "New York 15 Nuts"
s2 = "Pennsylvania 15 Nuts"
for s in [s1, s2]:
*State, Size, Department = s.split(" ")
print("State:"," ".join(State),"\nDistrict Size:",Size,"\nDepartment:",Department)
uj5u.com熱心網友回復:
看起來你可以rsplit使用maxsplit:
>>> s = "New York 15 Nuts"
>>> s.rsplit(maxsplit=2)
['New York', '15', 'Nuts']
>>> s = "Pennsylvania 15 Nuts"
>>> s.rsplit(maxsplit=2)
['Pennsylvania', '15', 'Nuts']
uj5u.com熱心網友回復:
如果部門總是一個詞,可以根據拆分陣列的長度來決定做什么。
此解決方案是一種快速修復。
更理想的解決方案是用逗號分隔資料(如果您有權訪問該資料),并使用 salesoutput.split(',')。
注意:我只會將陣列拆分一次,這樣您就不會創建同一個拆分陣列的多個副本,以節省時間和空間。
import json
def lambda_handler(event, context):
print('## EVENT')
print(event)
#salesoutput=event['Details']['ContactData']['Attributes'].get('salesoutput',"Not Available")
salesoutput= "New York 15 Nuts"
#salesoutput= "Pennsylvania 15 Nuts"
sales = salesoutput.split(' ')
if len(sales) == 3:
State = sales[0]
Size = sales[1]
Department = sales[2]
elif len(sales) == 4:
State = sales[0] " " sales[1]
Size = sales[2]
Department = sales[3]
print("State:",State,"\nDistrict Size:",Size,"\nDepartment:",Department)
# TODO implement
return {
"State":State,
"Size":Size,
"Department": Department
#"Email":response["Item"]["Email"]
#'statusCode': 200,
#'body': json.dumps('Hello from Lambda!')
}
uj5u.com熱心網友回復:
@Repl.it
謝謝你這樣做了,它只需要針對 json 輸入進行調整。這只是表明我對Python的缺乏經驗......
import json
import re
def lambda_handler(event, context):
salesoutput=event['Details']['ContactData']['Attributes'].get('salesoutput',"Not Available")
pattern = re.compile(r'([\w\s] )\s(\d{1,})\s([\w\s] )')
result = pattern.search(salesoutput)
State, Size, Department = result.groups()
print("State:",State,"\nDistrict Size:",Size,"\nDepartment:",Department)
# TODO implement
return {
"State":State,
"Size":Size,
"Department": Department
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517953.html
