如何从 api 调用中考虑 None

问题描述

正在进行 API 调用,并且在循环浏览我的文件时得到一个 None 值。 我会把我的 csv 放在这里,但它有超过 10 万条记录。

我的代码

import csv
import xml.etree.ElementTree as ET
import xml.dom.minidom  
import requests
import json
import pandas as pd
from pandas.io.json import json_normalize

#Storing results
api_results = []
error_results = []
none_results = []


print('Starting XML loop')

with open("C:/Users/template_v2.csv") as f: 
   reader = csv.DictReader(f)

   # WRITING TO XML NODES 
   for i,row in enumerate(reader,start=1):
       # INITIALIZING XML FILE
       root = ET.Element('cbcalc')

       icdNode = ET.SubElement(root,"icdcodes")
        #handling first level ICD codes
       for code in row['D'].split('~'):
           ET.SubElement(icdNode,"code").text = code

           #handling Client ID,state,country,age,job class and output
       ET.SubElement(root,"clientid").text = row['CLaim_NUM']
       ET.SubElement(root,"state").text = row['BEN_ST']
       ET.SubElement(root,"country").text = "US"  
       ET.SubElement(root,"age").text = row['AGE']
       ET.SubElement(root,"jobclass").text = "1" 
       ET.SubElement(root,"fulloutput").text ="Y"

       #handling the cfactors:
       cfNode = ET.SubElement(root,"cfactors")
       for k in ['legalrep','depression','diabetes','hypertension','obesity','smoker','subabuse']:
           ET.SubElement(cfNode,k.lower()).text = str(row[k])

       psNode = ET.SubElement(root,"prosummary")

       psicdNode = ET.SubElement(psNode,"icd")
       for code in row['P'].split('~'):
           ET.SubElement(psNode,"code").text = code

       psndcNode = ET.SubElement(psNode,"ndc")
       for code in row['NDC_codes'].split('~'):
           ET.SubElement(psNode,"code").text = code 

       cptNode = ET.SubElement(psNode,"cpt")
       for code in row['CPT_codes'].split('~'):
           ET.SubElement(cptNode,"code").text = code

       ET.SubElement(psNode,"hcpcs")

       doc = ET.tostring(root,method='xml',encoding="UTF-8")
       response = requests.post(target_url,data=doc,headers=login_details)
       response_data = json.loads(response.text)
       if type(response_data)==dict and 'error' in response_data.keys():
           error_results.append(response_data)
       elif response_data == None or response_data == '':
           none_results.append(response_data)
       else:
           api_results.append(response_data)

print('creating dataframe')
strategic_df = pd.json_normalize(api_results)

print("Writing out csv file")
strategic_df.to_csv(r'C:\Users\_dataframe2.csv',index = False,header=True)

这是我的错误信息:

Traceback (most recent call last):
  File "c:\Users\Python\sc_ras_api.py",line 66,in <module>
    response_data = json.loads(response.text)
  File "C:\Users\AppData\Local\Programs\Python\python38-32\lib\json\__init__.py",line 357,in loads
    return _default_decoder.decode(s)
  File "C:\Users\AppData\Local\Programs\Python\python38-32\lib\json\decoder.py",line 337,in decode
    obj,end = self.raw_decode(s,idx=_w(s,0).end())
  File "C:\Users\AppData\Local\Programs\Python\python38-32\lib\json\decoder.py",line 355,in raw_decode
    raise JSONDecodeError("Expecting value",s,err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我破坏了什么以及如何修复它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)