xunke 发表于 2022-8-29 21:36:10

python自带split函数当分隔符在边界时就出现Bug,重写split函数解决

本帖最后由 xunke 于 2022-8-30 07:16 编辑

python内置的split函数详解网址https://www.runoob.com/python/att-string-split.html

当分隔符在边界时就出现bug,例子如下面截图所示


本人自己写的split函数解决这个问题,代码如下:

wye11083 发表于 2022-8-29 22:03:28

看看split有没有trim功能。。

智涅 发表于 2022-8-29 22:08:14

s1其实最后就是有个结束符吧,“看不见”而已。字节流这样切分吧结束符分到后面,也是合理吧

dukelec 发表于 2022-8-29 22:12:26

len(s1)

看一下字符串长度

Himem 发表于 2022-8-29 22:24:26

本帖最后由 Himem 于 2022-8-29 22:25 编辑

结果就是这样呀,
各个语言都是这个逻辑

不然split('a')试试 或者换成'abccba'

xunke 发表于 2022-8-30 07:18:58

dukelec 发表于 2022-8-29 22:12
len(s1)

看一下字符串长度
(引用自4楼)

结果是6个

shawn_bu 发表于 2022-8-30 07:23:17

先trim一下在split搞定

xunke 发表于 2022-8-30 08:18:21

Himem 发表于 2022-8-29 22:24
结果就是这样呀,
各个语言都是这个逻辑

(引用自5楼)

以a分隔结果是['', 'bc', 'bc']

xunke 发表于 2022-8-30 08:23:55

本帖最后由 xunke 于 2022-8-30 11:30 编辑

shawn_bu 发表于 2022-8-30 07:23
先trim一下在split搞定
(引用自7楼)

没有空格,并且与空格无关。
python没发现有trim函数。

xunke 发表于 2022-8-30 08:26:11

wye11083 发表于 2022-8-29 22:03
看看split有没有trim功能。。
(引用自2楼)

搜了下,python没trim函数,
python去空格方法是strip()函数

xunke 发表于 2022-8-30 08:28:14

智涅 发表于 2022-8-29 22:08
s1其实最后就是有个结束符吧,“看不见”而已。字节流这样切分吧结束符分到后面,也是合理吧 ...
(引用自3楼)

不像结束符,开头也会有这个东西。

yyts 发表于 2022-8-30 08:28:16

不是bug,各个语言都是这个逻辑。

wochai 发表于 2022-8-30 09:21:01

我到觉得很合理啊!

有没有和我一样觉得合理的?

Nuker 发表于 2022-8-30 09:30:33

s.strip().split()

XIVN1987 发表于 2022-8-30 09:41:39

本帖最后由 XIVN1987 于 2022-8-30 09:57 编辑

搜了下发现用removeprefix、removesuffix比较好。。不过这两个方法都是 Python 3.9 新添加的

xmlbb 发表于 2022-8-30 09:55:38

你重写也太复杂了,你判断最后一个字符是不是分隔符,是的话,删除,再split,或者先split,再判断最后一个字符串是不是空,是空删除就行了,这样又简洁又易懂。

modbus 发表于 2022-8-30 10:13:45

正常就是这样,如果第1个字符为c,那么最左边也会分隔出1个空字符串,VB的split函数也是这样,做过很多字符串处理,感觉这样分隔很有用

shawn_bu 发表于 2022-8-30 11:17:18

xunke 发表于 2022-8-30 08:23
没有空格,并且与空格无关。
(引用自9楼)

可以trim分割字符

wudicgi 发表于 2022-8-30 13:03:45

不是 bug, 一般 split 函数默认的逻辑就是这样的

特殊情况有的语言可以加额外参数,像 C# 里可以通过使用 StringSplitOptions.RemoveEmptyEntries 选项把空的项目移除
https://docs.microsoft.com/zh-cn/dotnet/api/system.stringsplitoptions?view=net-6.0

t3486784401 发表于 2022-8-30 13:15:14

这让用惯了 strtok 和 tokenize 的情何以堪...

xunke 发表于 2022-9-1 16:45:33

谢谢以上各位高手的回复!
页: [1]
查看完整版本: python自带split函数当分隔符在边界时就出现Bug,重写split函数解决