Python 分隔字符串的最佳ASCII字符是什么?
我在一个系统上工作,客户可以在该系统上向我发送编码为utf-8的unicode字符串。在某种程度上,我使用一种逗号分隔的列表对其数据进行打包/序列化(C++),如:Python 分隔字符串的最佳ASCII字符是什么?,python,c++,c,string,unicode,Python,C++,C,String,Unicode,我在一个系统上工作,客户可以在该系统上向我发送编码为utf-8的unicode字符串。在某种程度上,我使用一种逗号分隔的列表对其数据进行打包/序列化(C++),如: fieldName:value,other fieldname:value, etc.... 该字符串从进程中传出,如果python脚本捕获该字符串以提取字典: {"fieldName":"value", etc..... } 为了提取它,我使用了一个简单的正则表达式re.compile(ur“(.*?):(.*?(,|$)”
fieldName:value,other fieldname:value, etc....
该字符串从进程中传出,如果python脚本捕获该字符串以提取字典:
{"fieldName":"value", etc..... }
为了提取它,我使用了一个简单的正则表达式re.compile(ur“(.*?):(.*?(,|$)”,re.UNICODE)
。
但是我知道用户可以在他们发送的字符串中使用<代码>、<代码>和<代码>:<代码>,所以我正在搜索我可以在C++级别使用的最好的ASCII代码来替换现在使用的逗号?
如果必须是用户无法用键盘输入的内容,那么\xF8
(248)是否是一个不错的选择!
欢迎提供任何帮助和建议。使用JSON而不是内部格式 理由:
$IFS
-hell\x0D或\x0A是一个简单的选择,如果您没有多行输入字符串,并且这些字符串可以轻松显示。或者选项卡(\x09),如果用户无法输入它。我会使用其中一个;其优点是具有标准化的含义:
^\ 28 1C FS ␜ File Separator
^] 29 1D GS ␝ Group separator
^^ 30 1E RS ␞ Record Separator
^_ 31 1F US ␟ Unit separator
可以用作分隔符来标记数据结构的字段。如果用于分层级别,则US是最低级别(划分纯文本数据项),而RS、GS和FS是递增级别,以划分由其下级别的项组成的组
或者使用真正的格式,如JSON或XML。我不知道它是否是最好的格式,我不知道是否有 “最佳”-但我已经看到“
”在这方面使用了很多
如果它不必可见,也不必通过键盘输入,
有许多控制字符可以执行此操作:
ASCII单独定义了四个:FS、GS、RS和US(用于字段
分隔符、组分隔符、记录分隔符和单位
分隔符),代码0x1C-0x1F;这些都是自然的
当然,最普遍的解决方案是使用quoted
字符串,带有转义字符。这两者都很难做到
但是,解析并生成 这似乎是
Ø
(0xf8)的一个好选择,至少在一些斯堪的纳维亚键盘上很容易输入。没有“最佳”选择,因为任何这样的选择都取决于编码的数据。你知道输入是有效的UTF-8吗?在检查完之后,可以使用UTF-8中无效的字节。0xF8就是这样一个字节@JoachimIsaksson:Unicode代码点0xF8被编码为0xC3 0xB8。谢谢这个建议,我终于在我的C++代码中增加了一点复杂性,把我的字符串映射传递给JSON编写器,我使用了Python JSON解析器,现在所有奇怪的单元测试我都有了一个绿色!所以