joint 发表于 2017-7-1 19:34:16

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

本帖最后由 joint 于 2017-7-18 18:05 编辑

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

tubaba 发表于 2017-7-2 11:33:10

回复 1# joint


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

$str = stringreplace($str,'""','","') ;连续双引号替换为","
$str = stringreplace($str,' ','","');空格替换为","

joint 发表于 2017-7-2 14:39:44

非常感谢,刚接触这类事情,这方面一点经验都没有。

joint 发表于 2017-7-2 15:35:56

本帖最后由 joint 于 2017-7-3 10:46 编辑

回复joint
    很简单啊,显示的数据很有规律性.假设$str保存数据内容
$str = stringreplace($ ...
tubaba 发表于 2017-7-2 11:33 http://www.autoitx.com/images/common/back.gif

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



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

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

joint 发表于 2017-7-2 15:43:15

回复 2# tubaba

可以了,谢谢。

joint 发表于 2017-7-3 10:18:12

@tubaba
又出状况了。


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

joint 发表于 2017-7-3 10:28:32

本帖最后由 joint 于 2017-7-3 10:40 编辑

原因应该是在不该有空格的地方出现了空格,也就是在*ST后面出现了空格,代码把该空格替换为逗号后发生了错位。这个要增加新的判断条件,是不是应该这样写:
$sText = stringreplace($sText,'*ST ','*ST')

joint 发表于 2017-7-3 10:42:52

本帖最后由 joint 于 2017-7-3 12:50 编辑

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


yamakawa 发表于 2017-7-3 13:26:52

本帖最后由 yamakawa 于 2017-7-3 14:20 编辑

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

大概明白你意思了。。第二个文字列中可能存在空格对吧,,,,有点不好弄啊。。。。

84063016 发表于 2017-7-3 14:05:06

看看学习下大神的解决办法~~~

joint 发表于 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');

joint 发表于 2017-7-3 14:39:44

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

大概明白你意思了。。第 ...
yamakawa 发表于 2017-7-3 13:26 http://www.autoitx.com/images/common/back.gif

正则还没顾上学呢。
数据在上面附件里。

joint 发表于 2017-7-3 14:45:18

数据情况有点乱,标准的是4个汉字,但有的是3个汉字,3个汉字又分多种情况,有的空格在第一个,有的在第二个,有的在最后,ST股也是这样。所以,麻烦的是所有名称是3个字的都有可能出现1种以上的问题。

yamakawa 发表于 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")试试这个代码可以不可以

joint 发表于 2017-7-3 16:39:29

回复joint 试试这个代码可以不可以
yamakawa 发表于 2017-7-3 15:05 http://www.autoitx.com/images/common/back.gif

谢谢,数据在变量$sText里,这样直接读有没有问题?
Local $Txt = FileRead($sText)
如果没问题的话,执行后好像没输出,打开的excel也是空的。
页: [1] 2 3
查看完整版本: MsgBox显示像这种样子的数据怎么存为CSV格式? 已解决