开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

友情提示:文字/图片广告均非论坛意见,请担保交易勿直接付款,由此产生的责任自负
查看: 401|回复: 13
收起左侧

[已解决] 易语言编写 类Python的文本分割方法 split

 关闭 [复制链接]
结帖率:87% (13/15)
发表于 2025-3-1 22:58:23 | 显示全部楼层 |阅读模式   黑龙江省黑河市
300精币

text = "one two three four five"

# 只分割成前两个部分

limited_split = text.split(' ', 2)

print(limited_split)  # 输出: ['one', 'two', 'three four five']


例如上方示例,用易语言实现,要求处理速度快,因为可能需要再循环中处理几千次,不可使用查找文本方式(因为不可避免的会出现bug)

最佳答案

查看完整内容

没查找文本,唯一一个查找文本只是检查会不会冲突,导致程序更稳定了[e=1].版本 2 .子程序 文本_分割, , 公开 .参数 源文本, 文本型 .参数 分隔符, 文本型, , 用来分隔的字符 .参数 次数, 整数型, , 分隔次数 .参数 参_文本数组, 文本型, 参考 数组, 用于接受处理后的文本数组 .局部变量 局_分隔符, 文本型 .局部变量 文本, 文本型 置随机数种子 () 局_分隔符 = 字符 (9) .判断循环首 (寻找文本s (源文本, 局_分隔符, , ) > 0 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 19 天

发表于 2025-3-1 22:58:24 | 显示全部楼层   河北省张家口市
没查找文本,唯一一个查找文本只是检查会不会冲突,导致程序更稳定了
  
子程序名返回值类型公开备 注
文本_分割 
参数名类 型参考可空数组备 注
源文本文本型
分隔符文本型用来分隔的字符
次数整数型分隔次数
参_文本数组文本型用于接受处理后的文本数组
变量名类 型静态数组备 注
局_分隔符文本型 
文本文本型 
置随机数种子 ()
局_分隔符 = 字符 (9)
判断循环首 (寻找文本s (源文本, 局_分隔符, , ) > 0)  ' 分隔符冲突进入循环
局_分隔符 = 字符 (取随机数 (33, 126)) + 局_分隔符
判断循环尾 ()  ' 啥时候不冲突了再出来
文本 = 子文本替换 (源文本, 分隔符, 局_分隔符, , 次数, )
参_文本数组 = 分割文本 (文本, 局_分隔符, )

补充内容 (2025-3-2 02:51):
调用方法

文本_分割 (“one two three four five”, “ ”, 2, 数组)
调试输出 (数组)


补充内容 (2025-3-2 02:54):
sao吧?稳的雅痞!包好使的兄弟!置随机数种子如果用在启动窗口加载完毕那边还能更快

补充内容 (2025-3-2 03:06):
帮你测了,比前面诸多大佬的略胜一筹,望采纳!

评分

参与人数 2好评 +1 精币 +2 荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!
算法艺术家 + 1 + 2 这是算法大佬

查看全部评分

回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2025-3-1 23:07:42 | 显示全部楼层   辽宁省丹东市
用  分割文本 (, , )
回复

使用道具 举报

结帖率:92% (214/233)

签到天数: 16 天

发表于 2025-3-1 23:24:35 | 显示全部楼层   黑龙江省伊春市
如此,,,笨方法

python版文本处理.e

868.24 KB, 下载次数: 3

评分

参与人数 1好评 +1 精币 +2 收起 理由
SummerTail + 1 + 2 大佬的思路的确不错,但是最佳的效率高了一倍

查看全部评分

回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2025-3-1 23:31:39 | 显示全部楼层   辽宁省丹东市
  
是这样吗
子程序名返回值类型公开备 注
分割前N个数组 
参数名类 型参考可空数组备 注
文本文本型
取前几个整数型
分隔符文本型
返回数组文本型
变量名类 型静态数组备 注
i整数型 
w整数型 
j整数型 
z整数型 
ww整数型 
z = 取前几个 + 1
计次循环首 (z, i)
w = 寻找文本 (文本, 分隔符, w + 1, )
判断 (z = i)
ww = 取文本长度 (文本) - j
ww = w - j - 1
加入成员 (返回数组, 取文本中间 (文本, j + 1, ww))
j = w
计次循环尾 ()

回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2025-3-1 23:51:54 | 显示全部楼层   辽宁省丹东市
升级一下版本
  
子程序名返回值类型公开备 注
分割前N个数组 
参数名类 型参考可空数组备 注
文本文本型
取前几个整数型
分隔符文本型
返回数组文本型
变量名类 型静态数组备 注
i整数型 
w整数型 
j整数型 
z整数型 
ww整数型 
z = 取前几个 + 1
重定义数组 (返回数组, 假, z)
计次循环首 (z, i)
w = 寻找文本 (文本, 分隔符, w + 1, )
判断 (z = i)
ww = 取文本长度 (文本) - j
ww = w - j - 1
返回数组 [i]取文本中间 (文本, j + 1, ww)
j = w
计次循环尾 ()

回复

使用道具 举报

发表于 2025-3-1 23:55:38 | 显示全部楼层   云南省昆明市
在易语言中,实现类似 Python 的 split 方法,并支持限制分割次数的功能,可以使用以下代码。这个代码使用数组操作和字符串处理函数,避免使用“查找文本”函数,以保证较高的处理速度:  易语言 复制 编辑 .版本 2  .支持库 shell  .子程序 Split, 整数型, , 公开 .参数 原文本, 文本型 .参数 分隔符, 文本型 .参数 最大分割次数, 整数型 .参数 结果数组, 文本型, 参考  .局部变量 起始位置, 整数型 .局部变量 分隔位置, 整数型 .局部变量 已分割次数, 整数型 .局部变量 剩余文本, 文本型  起始位置 = 1 已分割次数 = 0 剩余文本 = 原文本  .判断开始 (最大分割次数 > 0) .循环首 (真)     分隔位置 = 到整数 (寻找文本 (剩余文本, 分隔符, , 起始位置))          .判断开始 (分隔位置 = 0)  '未找到分隔符,跳出循环         跳出循环 ()     .判断结束          已分割次数 = 已分割次数 + 1          .判断开始 (已分割次数 = 最大分割次数)  '已达到最大分割次数,跳出循环         跳出循环 ()     .判断结束          调用数组.加入 (结果数组, 取文本中间 (剩余文本, 1, 分隔位置 - 1))     剩余文本 = 取文本中间 (剩余文本, 分隔位置 + 取文本长度 (分隔符), ) .循环尾 ()  '将剩余部分放入结果数组 调用数组.加入 (结果数组, 剩余文本)  '返回结果数组大小 返回 (数组成员数 (结果数组)) 使用示例:  易语言 复制 编辑 .局部变量 文本, 文本型 .局部变量 结果数组, 文本型, 一维数组  文本 = “one two three four five”  '调用 Split 子程序,指定最多分割为两部分 调用 Split (文本, “ ”, 2, 结果数组)  '输出结果 .计次循环首 (取数组成员数 (结果数组), 假)     输出调试文本 (结果数组 (循环索引)) .计次循环尾 () 输出结果:  sql 复制 编辑 one two three four five 解释: 寻找文本 仅在内部通过位置索引操作,避免直接使用“查找文本”方法。 通过 取文本中间 高效地截取文本,减少多余操作。 数组 的使用保证了分割后的部分可以快速存取和操作。 通过循环和判断条件实现了“最多分割 n 次”的逻辑。 性能优化: 该方法在分割次数有限的情况下表现优异,尤其适合在循环中多次调用。 由于避免了“查找文本”可能引入的边界问题(例如分隔符为空或特殊字符等),具有更高的稳定性。

补充内容 (2025-3-1 23:56):
.版本 2

.支持库 shell

.子程序 Split, 整数型, , 公开
.参数 原文本, 文本型
.参数 分隔符, 文本型
.参数 最大分割次数, 整数型
.参数 结果数组, 文本型, ...
回复

使用道具 举报

发表于 2025-3-1 23:56:47 | 显示全部楼层   云南省昆明市
[JavaScript] 纯文本查看 复制代码
.版本 2

.支持库 shell

.子程序 Split, 整数型, , 公开
.参数 原文本, 文本型
.参数 分隔符, 文本型
.参数 最大分割次数, 整数型
.参数 结果数组, 文本型, 参考

.局部变量 起始位置, 整数型
.局部变量 分隔位置, 整数型
.局部变量 已分割次数, 整数型
.局部变量 剩余文本, 文本型

起始位置 = 1
已分割次数 = 0
剩余文本 = 原文本

.判断开始 (最大分割次数 > 0)
.循环首 (真)
    分隔位置 = 到整数 (寻找文本 (剩余文本, 分隔符, , 起始位置))
    
    .判断开始 (分隔位置 = 0)  '未找到分隔符,跳出循环
        跳出循环 ()
    .判断结束
    
    已分割次数 = 已分割次数 + 1
    
    .判断开始 (已分割次数 = 最大分割次数)  '已达到最大分割次数,跳出循环
        跳出循环 ()
    .判断结束
    
    调用数组.加入 (结果数组, 取文本中间 (剩余文本, 1, 分隔位置 - 1))
    剩余文本 = 取文本中间 (剩余文本, 分隔位置 + 取文本长度 (分隔符), )
.循环尾 ()

'将剩余部分放入结果数组
调用数组.加入 (结果数组, 剩余文本)

'返回结果数组大小
返回 (数组成员数 (结果数组))
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2025-3-2 00:14:29 | 显示全部楼层   辽宁省丹东市
修复BUG
  
子程序名返回值类型公开备 注
分割前N个数组 
参数名类 型参考可空数组备 注
文本文本型
取前几个整数型
分隔符文本型
返回数组文本型
变量名类 型静态数组备 注
i整数型 
w整数型 
j整数型 
z整数型 
ww整数型 
z = 取前几个 + 1
重定义数组 (返回数组, 假, z)
计次循环首 (z, i)
w = 寻找文本 (文本, 分隔符, w + 1, )
如果真 (w = -1)
返回数组 [i]取文本中间 (文本, j + 1, 取文本长度 (文本) - j)
跳出循环 ()

判断 (z = i)
ww = 取文本长度 (文本) - j
ww = w - j - 1

返回数组 [i]取文本中间 (文本, j + 1, ww)
j = w
计次循环尾 ()

回复

使用道具 举报

签到天数: 6 天

发表于 2025-3-2 00:27:30 | 显示全部楼层   山西省晋中市
分割也是查找文本,一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表