c++转换python返回的字符串
码农不了一点:
已经解决了,结果是python中的中文出现导致编码问题,只要将最终输出转换成utf-8编码输出就行了,参考的下面的文章
https://www.cnblogs.com/muchengnanfeng/p/9590404.html
c++转换python返回的字符串
码农不了一点:
[code=python]
def CityInquire(cityname):
city = unicode(cityname,'utf-8')
filename = "AMap_adcode_citycode_20210406.xlsx"
date = pd.read_excel(filename,header=0,index_col=0,encoding="utf-8")
adcode = date.loc[city,'adcode']
return int(adcode)
def GetDate(adcode):
mkey = '53e38fe6e4a9d29719c6210ad1295a'
mcity = adcode
url = "https://restapi.amap.com/v3/weather/weatherInfo?key={}&city={}".format(mkey,mcity)
response = requests.get(url)
if response.status_code==200:
date = json.loads(response.text)
ls = date['lives'][0]
city = ls['city']
temperature = ls['temperature_float']
humidity = ls['humidity_float']
info = "city:"+city+" temperature:"+temperature+" humidity:"+humidity
return info
else:
return 0
def main(cityname):
adcode = CityInquire(cityname)
info = GetDate(adcode)
print(info)
return info
[/code]
c++转换python返回的字符串
码农不了一点:
你好,我刚好遇到类似的问题,能否帮我看看呢?
[code=plain]
pi@ubuntu:~/Project$ ./a
ok
city:北京市 temperature:5.0 humidity:51.0
Exception UnicodeEncodeError: UnicodeEncodeError('ascii', u'city:\u5317\u4eac\u5e02 temperature:5.0 humidity:51.0', 5, 8, 'ordinal not in range(128)') in
[/code]
我也觉得可能是编码问题,下面是C语言代码,功能就是向一个python函数传参并且接受返回的值,从上述结果来看已经是成功被调用而且传参也成功了,不过就是在接受返回参数的时候报错了。下面是具体的C程序:
[code=csharp]
char *getstr = "北京市";
char *filename = "WF";
//初始化python解释器
Py_Initialize();
if(!Py_IsInitialized()){
printf("Initialize failed!\n");
return 0;
}
//导入当前路径
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject *pmodule = PyImport_ImportModule(filename);
if(!pmodule){
printf("can't find %s\n",filename);
return 0;
}
printf("ok\n");
PyObject *pfunc = PyObject_GetAttrString(pmodule,"main");
//PyObject *pargs = Py_B
[/code]
补充一下,我还觉得可能是python返回参数编码的问题,因为有中文所以我将这个默认编码改成了utf-8。下面是具体的python程序