C语言字符串转换为Python字符串的方法
问题
怎样将C中的字符串转换为Python字节或一个字符串对象?
解决方案
C字符串使用一对 char *
和 int
来表示, 你需要决定字符串到底是用一个原始字节字符串还是一个Unicode字符串来表示。 字节对象可以像下面这样使用 Py_BuildValue()
来构建:
char *s; /* Pointer to C string data */ int len; /* Length of data */ /* Make a bytes object */ PyObject *obj = Py_BuildValue("y#", s, len);
如果你要创建一个Unicode字符串,并且你知道 s 指向了UTF-8编码的数据,可以使用下面的方式:
PyObject *obj = Py_BuildValue("s#", s, len);
如果 s
使用其他编码方式,那么可以像下面使用 PyUnicode_Decode()
来构建一个字符串:
PyObject *obj = PyUnicode_Decode(s, len, "encoding", "errors"); /* Examples /* obj = PyUnicode_Decode(s, len, "latin-1", "strict"); obj = PyUnicode_Decode(s, len, "ascii", "ignore");
如果你恰好有一个用 wchar_t *, len
对表示的宽字符串, 有几种选择性。首先你可以使用 Py_BuildValue()
:
wchar_t *w; /* Wide character string */ int len; /* Length */ PyObject *obj = Py_BuildValue("u#", w, len);
另外,你还可以使用 PyUnicode_FromWideChar()
:
PyObject *obj = PyUnicode_FromWideChar(w, len);
对于宽字符串,并没有对字符数据进行解析——它被假定是原始Unicode编码指针,可以被直接转换成Python。
讨论
将C中的字符串转换为Python字符串遵循和I/O同样的原则。 也就是说,来自C中的数据必须根据一些解码器被显式的解码为一个字符串。 通常编码格式包括ASCII、Latin-1和UTF-8. 如果你并不确定编码方式或者数据是二进制的,你最好将字符串编码成字节。 当构造一个对象的时候,Python通常会复制你提供的字符串数据。 如果有必要的话,你需要在后面去释放C字符串。 同时,为了让程序更加健壮,你应该同时使用一个指针和一个大小值, 而不是依赖NULL结尾数据来创建字符串。
以上就是C语言字符串转换为Python字符串的方法的详细内容,更多关于C语言字符串转换为Python字符串的资料请关注我们其它相关文章!
相关推荐
-
python 转换 Javascript %u 字符串为python unicode的代码
web采集的数据为 %u6B63%u5F0F%u4EBA%u5458,需要读取并转换为python对象,想了下不调用Javascript去eval,只能自己翻译了. 核心代码: import re import codecs pattern = re.compile('%u[0-9A-Z]{4}') n = codecs.open('d:\\new.txt', 'w', 'utf-8') with open('d:\\p', 'r') as f: for l in f: for i in pat
-
python实现字典(dict)和字符串(string)的相互转换方法
本文实例讲述了python实现string和dict的相互转换方法.分享给大家供大家参考,具体如下: 字典(dict)转为字符串(string) 我们可以比较容易的将字典(dict)类型转为字符串(string)类型. 通过遍历dict中的所有元素就可以实现字典到字符串的转换: for key, value in sample_dic.items(): print "\"%s\":\"%s\"" % (key, value) 字符串(string
-
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档里面的命令是十六进制的.例如,给出一个指令: 5aa5 07 82 1000 3132 3334 . 那么,我们需要思考的是,我们如何将上面的指令,转换为pyserial库进行写操作时(write)所需要的bytes类型. 解决方法 首先,我们需要知道的是,我们首先,需要用字符串构造成上面的指令,然
-
python中将\\uxxxx转换为Unicode字符串的方法
今天碰到一个很有意思的问题,需要将普通的 Unicode字符串转换为 Unicode编码的字符串,如下: 将 \\u9500\\u552e 转化为 \u9500\u552e 也就是 销售 . 乍一看感觉挺简单的,用 re 库将前面的反斜杠去掉即可,但是在替换的过程中会抛出如下错误: Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> re.sub(r&
-
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
python3 json数据格式的转换(dumps/loads的使用.dict to str/str to dict.json字符串/字典的相互转换) Python3 JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进
-
python 将字符串转换成字典dict的各种方式总结
1)利用eval可以将字典格式的字符串与字典户转 >>>mstr = '{"name":"yct","age":10}' 转换为可以用的字典: >>>eval(mstr), type( eval(mstr) ) {"name":"yct","age":10}, dict 2).JSON到字典转化: >>>dictinfo = json
-
python 将字符串转换成字典dict
复制代码 代码如下: JSON到字典转化:dictinfo = simplejson.loads(json_str) 输出dict类型 字典到JSON转化:jsoninfo = simplejson.dumps(dict)输出str类型 比如:info = {'name' : 'jay', 'sex' : 'male', 'age': 22}jsoninfo = simplejson.dumps(info)print jsoninfo print type(jsoninfo)
-
Python 十六进制整数与ASCii编码字符串相互转换方法
在使用Pyserial与STM32进行通讯时,遇到了需要将十六进制整数以Ascii码编码的字符串进行发送并且将接收到的Ascii码编码的字符串转换成十六进制整型的问题.查阅网上的资料后,均没有符合要求的,遂结合各家之长,用了以下方法. 环境 Python2.7 + Binascii模块 十六进制整数转ASCii编码字符串 # -*- coding: utf-8 -*- import binascii #16进制整数转ASCii编码字符串 a = 0x665554 b = hex(a) #转换成相
-
C语言字符串转换为Python字符串的方法
问题 怎样将C中的字符串转换为Python字节或一个字符串对象? 解决方案 C字符串使用一对 char * 和 int 来表示, 你需要决定字符串到底是用一个原始字节字符串还是一个Unicode字符串来表示. 字节对象可以像下面这样使用 Py_BuildValue() 来构建: char *s; /* Pointer to C string data */ int len; /* Length of data */ /* Make a bytes object */ PyObject *obj
-
如何将Python字符串转换为JSON的实现方法
目录 什么是 JSON 在哪里使用JSON 基本的 JSON 语法 如何在 Python 中处理 JSON 数据 包含 JSON 模块 使用 json.loads() 函数 总结 在本教程中,你将学习 JSON 的基础知识--它是什么.常用在哪里以及它的语法. 你还将看到如何在 Python 中将字符串转换为 JSON. 让我们开始吧! 什么是 JSON JSON 是 JavaScript Object Notation(JavaScript 对象标记)的缩写. 它是一种数据格式,用于为 Web
-
C++实现十六进制字符串转换为十进制整数的方法
本文实例讲述了C++实现十六进制字符串转换为十进制整数的方法.分享给大家供大家参考.具体实现方法如下: /* * 将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值 */ #include <stdio.h> #include <math.h> /* 将十六进制中的字符装换为对应的整数 */ int hexchtoi(char hexch ) { char phexch[] = "ABCDEF"; char qhexch[] = &qu
-
通过字符串导入 Python 模块的方法详解
我们平时导入第三方模块的时候,一般使用的是 import 关键字,例如: import scrapy from scrapy.spider import Spider 但是如果各位同学看过 Scrapy 的 settings.py 文件,就会发现里面会通过字符串的方式来指定pipeline 和 middleware,例如: DOWNLOADER_MIDDLEWARES = { 'Test.middlewares.ExceptionRetryMiddleware': 545, 'Test.midd
-
对json字符串与python字符串的不同之处详解
API的应用通常会处理json数据,刚好今天看到了json字符串和python字符串的区别,放一段代码,区别一下子就看出来,的确json 库为处理Json 数据提供了不少的便利. import json jsonString = '{"arrayOfNums":[{"number":0},{"number":1},{"number":2}],"arrayOfFruits":[{"fruit&quo
-
js 将json字符串转换为json对象的方法解析
例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对象: var str2 = { "name": "cxh", "sex": "man" }; 一.JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为
-
asp实现二进制字符串转换为Unicode字符串
若需要utf-8格式,请自行将下面的GB2312改成utf-8. ' 二进制转字符串,否则会出现乱码的! Function sTb(vin) Const adTypeText = 2 Dim BytesStream,StringReturn Set BytesStream = Server.CreateObject("ADODB.Stream") With BytesStream .Type = adTypeText
-
Python字符串拼接、截取及替换方法总结分析
本文实例讲述了Python字符串拼接.截取及替换方法.分享给大家供大家参考,具体如下: python字符串连接 python字符串连接有几种方法,我开始用的第一个方法效率是最低的,后来看了书以后就用了后面的2种效率高的方法,跟大家分享一下. 先介绍下效率比较低的方法: a = ['a','b','c','d'] content = '' for i in a: content = content + i print content content的结果是:'abcd' 后来我看了书以后,发现书上
-
分享Python字符串关键点
字符串是 Python 中最常用的数据类型.我们可以使用引号来创建字符串.python字符串关键点有下面几点: 1.一些引号分隔的字符 你可以把字符串看出是Python的一种数据类型,在Python单引号或者双引号之间的字符数组或者连续的字符集合.在python中最常用的引号为('')和("").两者的功能是一样的,字符串的实际内容是引号之间的字符,不包含引号本身. 2.不可分字符类型 字符串是唯一的字面上的字符序列类型.不过,字符本身并不是一种类型,所以,字符串是字符存储操作的最基本
-
js将键值对字符串转为json字符串的方法
要转化的键值对字符 var respDesc="cardid=64157001&cardnum=1&sporder_id=PD12160428120635001&sporder_time=20160526101552": var newstr = respDesc.replace("=",":\""); var stringObj= "{" +newstr.replace("&
随机推荐
- 一个特牛的日期时间判断正则表达式
- Django小白教程之Django用户注册与登录
- Oracle SQL tuning 数据库优化步骤分享(图文教程)
- javascript制作的简单注册模块表单验证
- 进程监控实现代码[vbs+bat]
- Python聚类算法之DBSACN实例分析
- OpenStack初始化浅析
- 自定义应用程序配置文件(app.config)
- MySQL数据库 1067错误号的解决方法
- 分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
- javascript中setTimeout使用指南
- C#绘制飞行棋地图小程序
- 分享整理的12条sql语句连同数据
- Android基于Xposed修改微信运动步数实例
- node.js回调函数之阻塞调用与非阻塞调用
- asp.net计算一串数字中每个数字出现的次数
- C#判断三角形的类型
- Android中ListView如何分页加载数据
- 路由器设置新手上路---路由器设置结束
- 基于并发服务器几种实现方法(总结)