HiveNetCore.utils.string_tool module

字符串处理模块

class HiveNetCore.utils.string_tool.JsonHiveNetDecoder[源代码]

基类:JSONDecoder

支持将bytes编码的json字符串转换回bytes数组

static extend_dict(d: dict) Any[源代码]

处理扩展类型的字典解码

参数

d (dict) – 扩展类型字典

返回

返回真实对象

返回类型

Any

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)[源代码]

基类:JSONEncoder

支持对bytes对象转换为json字符串的Json编码器

default(o: Any) Any[源代码]

Implement this method in a subclass such that it returns

a serializable object for o, or calls the base implementation (to raise a TypeError).

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中

classmethod lines_count(text: str) int[源代码]

统计文本行数

参数

text (str) – 要统计的文本

返回

返回行数

返回类型

int

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

static xml_to_dict(xml_str, item_name='item')[源代码]

将XML字符串转换为字典对象

参数
  • xml_str (string) – 要转换的xml字符串

  • item_name (string) – default=’item’, 标识是列表项的标签名

static xml_to_json(xml_str, item_name='item')[源代码]

将XML字符串转换为JSON字符串

由于xmltodict与dicttoxml不匹配, 所以自行实现相关代码

参数
  • xml_str (string) – 要转换的xml字符串

  • item_name (string) – default=’item’, 标识是列表项的标签名