TC官方合作论坛

 找回密码
 立即注册
查看: 2524|回复: 11

[已解决] 文本内容部分截取问题,进来帮帮忙

[复制链接]
发表于 2014-3-31 00:43:50 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 境界程序员 于 2014-3-31 00:43 编辑

例如:有如下文字

老师,您好:
我已经在做了SCL90测试,
请您帮我分析一下:

你的总分为90分,总均分为1分 你的标准分为113
躯体化分12分均分1
强迫症状10分均分1
人际敏感9分均分1
抑郁症状13分均分1
焦虑症状10分均分1
敌对症状6分均分1
恐怖症状7分均分1
偏执症状6分均分1
饮食睡眠7分均分1
精神症状10分均分
1


目标是从上述文字里面,把后面相应的数字信息提取出来,存在相应的变量或者表格中(最终是会放到excel里面),需要请教大神,如何能提取出来?因为数字可能为1位数也可能2位数也可能3位数。
希望能示范第一句“你的总分为90分,总均分为1分 你的标准分为113

感激尽,会分割文字信息的请提示一下方法
回复

使用道具 举报

发表于 2014-3-31 15:47:21 | 显示全部楼层
本帖最后由 冷月无痕 于 2014-3-31 15:51 编辑

楼上的都正确,不过需要是固定格式的
还有一种思路是,获取每个字符判断是否整型,如果是保存,连续是,保存为一个数

文本 = "你的总分为90分,总均分为1分 你的标准分为113分体化分12分均分1强迫症状10分均分1人际敏感9分均分1抑郁症状13分均分1焦虑症状10分均分1敌对症状6分均分1恐怖症状7分均分1偏执症状6分均分1饮食睡眠7分均分1精神症状10分均分1"

  1. <p>文本 = "你的总分为90分,总均分为1分 你的标准分为113分体化分12分均分1强迫症状10分均分1人际敏感9分均分1抑郁症状13分均分1焦虑症状10分均分1敌对症状6分均分1恐怖症状7分均分1偏执症状6分均分1饮食睡眠7分均分1精神症状10分均分1"
  2.     长度 = 字符串.长度(文本)
  3.     计次判断=0,临时结果,结果=数组[],记录判断=0
  4.     遍历(计次=0;计次<长度-1;计次++)
  5.         内容 = 字符串.截取(文本,计次,计次+1)
  6.         如果(类型.是否为整型(内容) == 真)
  7.             计次判断++
  8.             临时结果 &= 内容
  9.             记录判断=1   
  10.         否则
  11.             如果(记录判断 == 1)
  12.                 数组空间.增加(结果,临时结果,1)
  13.                 记录判断=0
  14.                 临时结果=""
  15.             如果结束
  16.             计次判断 = 0
  17.         如果结束
  18.     遍历结束</p><p>如果(记录判断 == 1)
  19.     数组空间.增加(结果,临时结果,1)
  20. 如果结束
  21. 大小
  22. 数组空间.大小(结果,大小)
  23. 遍历(计次=0;计次<大小;计次++)
  24.     调试输出(结果[计次])
  25. 遍历结束</p>
复制代码
测试结果如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 2 反对 0

使用道具 举报

发表于 2014-3-31 01:21:03 | 显示全部楼层
本帖最后由 续花丶 于 2014-4-2 04:24 编辑



{:soso_e197:}
回复 支持 反对

使用道具 举报

发表于 2014-3-31 11:37:52 | 显示全部楼层
续花丶 发表于 2014-3-31 01:21
剩下的自己理解。

以 分 为标志分割
你把你的源串 复制到文本,然后用替换功能 把 分 换成 空格 看下 每个数组成员是什么样

源串="躯体化   12   均   1强迫症状10   均   1人际敏感9   均   1抑郁症状13   均   1焦虑症状10   均   1敌对症状6   均   1恐怖症状7   均   1偏执症状6   均   1饮食睡眠7   均   1精神症状10   均   1"


回复 支持 反对

使用道具 举报

发表于 2014-3-31 11:48:10 | 显示全部楼层
  1.    
  2.     //源串=str.replace(help.getclip(),"\r\n","")   ////此处用处将内容复制到剪切板,然后获取使用
  3.    
  4.     源串="你的总分为90分,总均分为1分 你的标准分为113分躯体化分12分均分1强迫症状10分均分1人际敏感9分均分1抑郁症状13分均分1焦虑症状10分均分1敌对症状6分均分1恐怖症状7分均分1偏执症状6分均分1饮食睡眠7分均分1精神症状10分均分1"
  5.         retArray
  6.     ret=str.regexmatchtext("\\d+",源串,retArray)
  7.     traceprint("数字个数: "&ret)
  8.     for(a=0;a<ret;a++)
  9.         traceprint(retArray[a])
  10.     endfor
复制代码


只要每个报告里面的每个项目位置都是固定的,就可以直接将 数组 retArray 的成员,一一对应到位.
如果不是固定的,那就得再做处理.
回复 支持 反对

使用道具 举报

发表于 2014-4-1 02:08:04 | 显示全部楼层
冷月无痕 发表于 2014-3-31 15:47
楼上的都正确,不过需要是固定格式的
还有一种思路是,获取每个字符判断是否整型,如果是保存,连续是,保存为一 ...

提取数字,一行代码能处理的事情,何必要写这么多呢.
还有二楼的处理方法是错误的.达不到要求效果
回复 支持 反对

使用道具 举报

发表于 2014-4-1 16:38:41 | 显示全部楼层
小西 发表于 2014-4-1 02:08
提取数字,一行代码能处理的事情,何必要写这么多呢.
还有二楼的处理方法是错误的.达不到要求效果 ...

  =  =,受教了。

。。反正所有字都不会变  变的只是数字而已,慢慢提取也可以啊。
表达一下方法而已。。
回复 支持 反对

使用道具 举报

发表于 2014-4-2 02:44:17 | 显示全部楼层
续花丶 发表于 2014-4-1 16:38
=  =,受教了。

。。反正所有字都不会变  变的只是数字而已,慢慢提取也可以啊。

表面是说是 受教 ,其实实际上还是在为自己开脱.狡辩.

还很轻描淡写的 "表达一下方法而已",你的方法在这个实例中就是一个错误.

自己去仔细将你上面的代码认真看看,实例操作一下,看能提出几个数字来.
再将你的 "慢慢提取也可以" 实现出来.
想学精,就改改你的不动手,想当然的轻浮态度吧.

回复 支持 反对

使用道具 举报

发表于 2014-4-2 04:42:42 | 显示全部楼层
小西 发表于 2014-4-2 02:44
表面是说是 受教 ,其实实际上还是在为自己开脱.狡辩.

还很轻描淡写的 "表达一下方法而已",你的方法在这 ...


知道你是大神.有大神的姿态.说个受教还成了为自己开脱.狡辩.

改改我不动手.看到这句话我也想到了一句话.我去年买了个表!

再次受教了。大神见了许多,你这种还没见过几次。
回复 支持 反对

使用道具 举报

发表于 2014-4-2 12:18:29 | 显示全部楼层
续花丶 发表于 2014-4-2 04:42
知道你是大神.有大神的姿态.说个受教还成了为自己开脱.狡辩.

改改我不动手.看到这句话我也想到了一句话. ...

不要以为自己写了几行源码放上面就算是动手.
你那几行代码能运行下去么?
就算补上 未添加的 变量,将遍历里面 数组下标 改对 得出的结果有用么?
运行一下我写的.冷月写的.
结合楼主要求,回头跟你自己写的去比较一下.
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 19:43 , Processed in 0.043476 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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