相关文章推荐
风流的墨镜
·
FineReport版本升级简介- ...
·
2 月前
·
风流的手术刀
·
exe免杀加壳工具包 火绒 - CSDN文库
·
4 月前
·
爱看球的签字笔
·
Root Certificate ...
·
4 月前
·
逼格高的花卷
·
源服务器迁移至轻量应用服务器 - ...
·
7 月前
·
狂野的毛豆
·
.delay() : ...
·
10 月前
·
小百科
›
Python 实例|分隔字符串并忽略引号内的内容_python split 引号中间过滤
要出家的足球
4 月前
def
split_by_ignore_quote
(
s
:
str
,
sep
:
str
,
quote_mark
=
None
,
escape_mark
=
"\\"
)
-
>
List
[
str
]
:
"""按 sep 切分字符串,并忽略被引号框柱的部分中的 sep Parameters ---------- s : str 目标字符串 sep : str quote_mark : Set[str], default = {"'", "\""} escape_mark : str, default = "\\" Returns ------- List[str] 切分后的字符串列表 Examples -------- >>> split_by_ignore_quote(r"1,'2,3',4", sep=",") ['1', "'2,3'", '4'] >>> split_by_ignore_quote(r"1,\\'2,3,4", sep=",") ['1', "'2", '3', '4'] >>> split_by_ignore_quote(r"1,'2,3,4", sep=",") ['1', "'2,3,4"]
if
quote_mark
is
None
:
quote_mark
=
{
"'"
,
"\""
}
assert
escape_mark
not
in
quote_mark
,
"escape mark in quote mark"
assert
sep
not
in
quote_mark
,
"separator mark in quote mark"
assert
escape_mark
!=
sep
,
"escape mark equal separator mark"
quote
=
False
# 是否在引号中
escape
=
False
# 前一个字符是否是转义符
res
=
[
[
]
]
for
ch
in
s
:
# 上一个字符是转义符:直接添加当前字符,并将转义标识置为 False
if
escape
is
True
:
res
[
-
1
]
.
append
(
ch
)
escape
=
False
# 当前字符是转义符:不添加当前字符,并将转义标识置为 True
elif
ch
in
escape_mark
:
escape
=
True
# 当前字符不是转义符,上一个字符也不是转义符
else
:
# 当前不在括号范围内,且当前字符为分隔符:执行一次切分
if
ch
==
sep
and
quote
is
False
:
res
.
append
(
[
]
)
# 执行一次切分
else
:
res
[
-
1
]
.
append
(
ch
)
# 当前在引号范围中:直接添加当前字符,并判断是否为引号,如果为引号则调整引号范围
if
ch
in
quote_mark
:
quote
=
not
quote
return
[
""
.
join
(
item
)
for
item
in
res
]
Python
字符串
分割
split
不拆分括号里面的
内容
欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定
内容
居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程...
python
中
字符串
的
split
能很方便的将
字符串
根据指定的分割符分割,但是如果不想分割
引号
中的分割符的话,
split
就无能为力了,写了一个小函数,
忽略
引号
中的分割符 def my_
split
(s, sep=' ', ignore='"'): """以seq分割,重复的seq按一个计算,
忽略
ignore中的seq,返回开始、结束这样的索引数组""" ignore_flag
推荐文章
风流的墨镜
·
FineReport版本升级简介- FineReport帮助文档 - 全面的报表使用教程和学习资料
2 月前
风流的手术刀
·
exe免杀加壳工具包 火绒 - CSDN文库
4 月前
爱看球的签字笔
·
Root Certificate install fails with code 26352 · Issue #4875 · wixtoolset/issues · GitHub
4 月前
逼格高的花卷
·
源服务器迁移至轻量应用服务器 - 服务器迁移中心 - 阿里云
7 月前
狂野的毛豆
·
.delay() : 设置一个延时来推迟执行队列中后续的项。 - jQuery API 中文文档 | jQuery中文网
10 月前