HiveNetCore.utils.string_tool module¶
字符串处理模块
- class HiveNetCore.utils.string_tool.JsonHiveNetDecoder[源代码]¶
基类:
json.decoder.JSONDecoder支持将bytes编码的json字符串转换回bytes数组
- class HiveNetCore.utils.string_tool.JsonHiveNetEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[源代码]¶
基类:
json.encoder.JSONEncoder支持对bytes对象转换为json字符串的Json编码器
- class HiveNetCore.utils.string_tool.StringTool[源代码]¶
基类:
object字符串处理通用类
提供各类字符串处理相关的常用工具函数( 静态方法)
- static bytes_to_hex(byte_array)[源代码]¶
将byte串转换为哈希字符串
- 参数
byte_array (byte[]) – 需要转换的byte数组
- 返回
转换后的hex字符串
- 返回类型
string
示例
StringTool.bytes_to_hex(bytes(“test string”, encoding=’utf-8’))
- static fill_fix_string(deal_str, fix_len, fill_char, left=True)[源代码]¶
用指定字符填充字符串达到固定长度
- 参数
deal_str (string) – 要处理的字符串
fix_len (int) – 返回字符串的固定长度
fill_char (string) – 填充字符(单字符)
left (bool) – default=True, 填充方向, True-左填充, False-右填充
- 返回
如果原字符串长度已超过指定长度, 则直接返回原字符串; 否则返回处理后的字符串
- 返回类型
string
示例
fix_str = StringTool.fill_fix_string(‘My job is’, 50, ‘ ‘, False)
- classmethod find_nth_index(s_str: str, f_str: str, n: int = 0, overlap: bool = False) int[源代码]¶
查找指定字符串在某字符串中第n次出现的位置
- 参数
s_str (str) – 源字符串
f_str (str) – 要查找的字符串
n (int) – default=0, 指定第几次出现
overlap (bool) – default=False, 是否允许重叠情况
- 返回
位置, 如果为-1代表没有找到
- 返回类型
int
- static format_obj_property_str(deal_obj, is_deal_subobj=False, c_level=0, max_level=10, is_same_line=False)[源代码]¶
将对象属性格式化为可打印字符串
- 参数
deal_obj ([type]) – 要格式化的对象
is_deal_subobj (bool) – default=False, 是否要打印属性对象的子属性
c_level (int) – default=0, 打印级别( 根据级别调整缩进位数, 每一级缩进2个空格)
max_level (int) – default=10, 最大检索级别, <=0代表不进行限制
is_same_line (bool) – default=False, 输出内容是否不换行, 内部使用, 如果不换行则忽略缩进
- 返回
返回格式化后的字符串
- 返回类型
string
示例
obj = NullObj()
obj.aa = 1
obj.cb = ‘fdfd’
obj.kk = NullObj()
obj.kk.abc = 3
obj.kk.bcd = ‘dfdfd’
print(StringTools.format_obj_property_str(obj=obj,is_deal_subobj=True))
- classmethod get_ends_same_len(str_a: str, str_b: str) int[源代码]¶
比较两个字符串结束位置相同的字符个数
- 参数
str_a (str) – 字符a
str_b (str) – 字符b
- 返回
相同字符个数
- 返回类型
int
- static get_list_from_str(deal_str)[源代码]¶
从字符串中提炼出数组
- 按照python的模式提炼出数组, 说明如下:
- 1、数组内的对象根据字符的形式取得实际类型, 例如:
‘text’ - 字符串 10 - 数字 True - bool类型
2、如果数组有嵌套, 可以支持嵌套的模式
- 参数
deal_str (string) – 要提炼的字符串, 内部要含有[a,b,c,d,’d’]这类的字符串, 例如’dfdfdfd[ddd,aa,dd]’
- 返回
抽离出来的数组
- 返回类型
list
示例
mylist = StringTool.get_list_from_str(‘aaa[“a”, 10, [39, 4], True, 21.4]bbb’)
- static get_n_index(src, sub, n=1, start=0)[源代码]¶
查找第n次出现子字符串的位置
- 参数
src (string) – 要处理的字符串
sub (string) – 要查找的子字符串
[n (int) – default=1], 要查找的字符串出现次数
[start (int) – default=0], 查找开始位置
- 返回
返回找到的位置, 如果找不到返回-1
- 返回类型
int
- static get_random_str(random_length=8, chars='AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789')[源代码]¶
随机生成固定长度的字符串
- 参数
random_length (int) – default=8, 需生成的字符串长度
chars (string) – default=”AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789”, 随机抽取的字符串内容
- 返回
返回的字符串
- 返回类型
string
示例
randomstr = StringTool.get_random_str(10)
- classmethod get_starts_same_len(str_a: str, str_b: str) int[源代码]¶
比较两个字符串开始相同的字符个数
- 参数
str_a (str) – 字符a
str_b (str) – 字符b
- 返回
相同字符个数
- 返回类型
int
- static hex_to_bytes(hex_str)[源代码]¶
将哈希字符串转换为byte数组
- 参数
hex_str (string) – 需要转换的Hex样式的字符串
- 返回
byte数组
- 返回类型
byte[]
示例
StringTool.hex_to_bytes(“A3D3F33433”)
- static json_dumps_hive_net(obj: Any, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, default=None, sort_keys=False, **kw) str[源代码]¶
将对象转换为json字符串(支持bytes数组及CResult)
- 参数
obj (Any) – 要处理的对象
json.dumps的其他入参 (-) –
- 返回
json字符串
- 返回类型
str
- static json_loads_hive_net(s, *, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) Any[源代码]¶
将json转换为Python对象(支持bytes数组及CResult)
- 参数
s (str|bytes) – 要转换的字符串或字节数组
json.loads的其他入参 (-) –
- 返回
转换后的python对象
- 返回类型
Any
- static json_to_object(json_str, class_ref=None, object_hook=None)[源代码]¶
将json字符串转换为python对象(支持自定义转换)
- 参数
json_str (string) – 要转换的json字符串
class_ref (class) –
default=None, 类定义引用, 例如generic.NullObj
引用的类必须实现__fromjson__的静态函数, 传入json字符串, 返回对象实例
object_hook (function) –
default=None, 将json对象转换为所需实例类的函数
函数入参为通过json标准库转换后的json对象, 出参为转换后的对象实例
参见
处理方式:
1、如果json_str为’’, 直接返回None
2、如果object_hook不为空, 则通过json库标准方法进行转换, 并使用object_hook将对象转换为所需的类型
3、如果class_ref不为None并且有__fromjson__的静态函数, 则通过该函数获取对象, 如果没有该函数抛出异常
- static json_to_xml(json_str, root=False, custom_root='root', ids=False, attr_type=False, item_func=None, cdata=False)[源代码]¶
将JSON字符串转换为XML字符串
- 参数
json_str (string) – 要转换的JSON字符串
root (bool) – default=False, 转换后的xml是否通过root标签包含
custom_root (string) – default=’root’, 自定义的根标签, 与root参数共同使用
ids (bool) – default=False, 指定每个xml元素是否产生唯一id
attr_type (bool) – default=False, 指定每个元素是否有一个类型的标签属性, 就像<item type=”str”>
item_func (fuction) –
default=None, 指定生成元素名的函数, 函数定义如下:
func(parent) {return ‘item-name’}
cdata (bool) – default=False, 指定字符串值是否包在CDATA中
- static object_to_json(obj)[源代码]¶
将python对象转换为json字符串(支持所有对象的通用转换)
- 参数
obj (object) – 要转换的json
参见
处理方式:
1、如果对象包含__json__方法, 则直接调用对象的该方法进行转换
2、尝试通过json库标准方法进行转换
3、如果对象不支持序列化, 转换会出现异常; 如果对象包含__dict__, 则将__dict__转换为json
4、如果都失败, 则抛出异常
- classmethod pascal_case_to_snake_case(camel_case: str) str[源代码]¶
驼峰(帕斯卡)变量命名转蛇形
(支持大小驼峰模式)
- 参数
camel_case (str) – 驼峰(帕斯卡)变量名形式(MyVarName或myVarName)
- 返回
转换后的蛇形变量名(my_var_name)
- 返回类型
str
- classmethod snake_case_to_big_pascal_case(snake_case: str) str[源代码]¶
蛇形变量名转大驼峰(帕斯卡)
- 参数
snake_case (str) – 蛇形变量名(my_var_name)
- 返回
大驼峰(帕斯卡)变量名形式(MyVarName)
- 返回类型
str
- classmethod snake_case_to_little_pascal_case(snake_case: str) str[源代码]¶
蛇形变量名转小驼峰(帕斯卡)
- 参数
snake_case (str) – 蛇形变量名(my_var_name)
- 返回
小驼峰(帕斯卡)变量名形式(myVarName)
- 返回类型
str
- classmethod version_cmp(v1: str, v2: str) str[源代码]¶
比较两个版本号字符串
- 参数
v1 (str) – 版本号1, 例如’3.4.0’或’v3.4.0’
v2 (str) – 版本号2, 例如’3.4.0’或’v3.4.0’
- 返回
v1与v2的大小关系, ‘>’, ‘<’, ‘=’
- 返回类型
str