找回密码
 加入
搜索
查看: 8215|回复: 34

[AU3基础] MsgBox显示像这种样子的数据怎么存为CSV格式? 已解决

  [复制链接]
发表于 2017-7-1 19:34:16 | 显示全部楼层 |阅读模式
本帖最后由 joint 于 2017-7-18 18:05 编辑

MsgBox显示像这种样子的数据怎么存为CSV格式?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-7-2 11:33:10 | 显示全部楼层
回复 1# joint


    很简单啊,显示的数据很有规律性.假设$str保存数据内容

  $str = stringreplace($str,'""','","') ;连续双引号替换为","
  $str = stringreplace($str,' ','","');空格替换为","
 楼主| 发表于 2017-7-2 14:39:44 | 显示全部楼层
非常感谢,刚接触这类事情,这方面一点经验都没有。
 楼主| 发表于 2017-7-2 15:35:56 | 显示全部楼层
本帖最后由 joint 于 2017-7-3 10:46 编辑
回复  joint
    很简单啊,显示的数据很有规律性.假设$str保存数据内容
  $str = stringreplace($ ...
tubaba 发表于 2017-7-2 11:33


不好意思,前面的问题解决了,新的问题是:如果名称是3个字的话,就会多一个空格出来,这样替换后成了下面的情况:



这个该怎么解决合适?谢谢。

我先试试把两个空格替换为一个空格,然后再替换为逗号看行不行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-7-2 15:43:15 | 显示全部楼层
回复 2# tubaba

可以了,谢谢。
 楼主| 发表于 2017-7-3 10:18:12 | 显示全部楼层
@tubaba  
又出状况了。


其实,已经把出现多个空格的情况也考虑了,昨天测试正常,今天又出现了这情况,还不知是怎么回事。
        $sText = stringreplace($sText,'     ',' ');空格替换为","
        $sText = stringreplace($sText,'    ',' ');空格替换为","
        $sText = stringreplace($sText,'   ',' ');空格替换为","
        $sText = stringreplace($sText,'  ',' ');空格替换为","
        $sText = stringreplace($sText,' ','","');空格替换为","

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-7-3 10:28:32 | 显示全部楼层
本帖最后由 joint 于 2017-7-3 10:40 编辑

原因应该是在不该有空格的地方出现了空格,也就是在*ST后面出现了空格,代码把该空格替换为逗号后发生了错位。这个要增加新的判断条件,是不是应该这样写:
$sText = stringreplace($sText,'*ST ','*ST')
 楼主| 发表于 2017-7-3 10:42:52 | 显示全部楼层
本帖最后由 joint 于 2017-7-3 12:50 编辑

又出状况了,问题可真多。这种情况有没有比较统一的处理方式啊?出一种情况就加个条件感觉比较笨啊,这样下去要没完没了了。有没有办法定位,比如对在时间后4个字符长度内的空格不转换。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-7-3 13:26:52 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-3 14:20 编辑

替换条件比较多的话,可以考虑正则替换
StringRegExpReplace
你把几个数据都打包了上传我看看。。。。

大概明白你意思了。。第二个文字列中可能存在空格对吧,,,,有点不好弄啊。。。。
发表于 2017-7-3 14:05:06 | 显示全部楼层
看看学习下大神的解决办法~~~
 楼主| 发表于 2017-7-3 14:30:54 | 显示全部楼层
还没想到好办法,只好暂时用这种笨办法了。

        $sText = stringreplace($sText,'五 ','五');
        $sText = stringreplace($sText,'粮 ','粮');
       
        $sText = stringreplace($sText,'南 ','南');
        $sText = stringreplace($sText,'京 ','京');
        $sText = stringreplace($sText,'万 ','万');
        $sText = stringreplace($sText,'*ST ','*ST');

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-7-3 14:39:44 | 显示全部楼层
替换条件比较多的话,可以考虑正则替换你把几个数据都打包了上传我看看。。。。

大概明白你意思了。。第 ...
yamakawa 发表于 2017-7-3 13:26


正则还没顾上学呢。
数据在上面附件里。
 楼主| 发表于 2017-7-3 14:45:18 | 显示全部楼层
数据情况有点乱,标准的是4个汉字,但有的是3个汉字,3个汉字又分多种情况,有的空格在第一个,有的在第二个,有的在最后,ST股也是这样。所以,麻烦的是所有名称是3个字的都有可能出现1种以上的问题。
发表于 2017-7-3 15:05:10 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-3 15:10 编辑

回复 13# joint
    #cs

writed by yamakawa
#ce
Local $Txt = FileRead(@ScriptDir & "\data.txt");这里改成数据来源
$Txt = StringRegExpReplace($Txt,'""'," ")
$Txt = StringRegExpReplace($Txt,'(?im)(?:")(\V+?)\h(\V+)\h(\V+?)\h(\V+?)"',' $1,$2,$3,$4 ')
Local $out = FileOpen(@TempDir & "\out.csv",514)
FileWrite($out,$Txt)
FileClose($out)
Sleep(500)
ShellExecute(@TempDir & "\out.csv")
试试这个代码可以不可以
 楼主| 发表于 2017-7-3 16:39:29 | 显示全部楼层
回复  joint 试试这个代码可以不可以
yamakawa 发表于 2017-7-3 15:05


谢谢,数据在变量$sText里,这样直接读有没有问题?
Local $Txt = FileRead($sText)
如果没问题的话,执行后好像没输出,打开的excel也是空的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 00:28 , Processed in 0.079185 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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