MsgBox显示像这种样子的数据怎么存为CSV格式? 已解决
本帖最后由 joint 于 2017-7-18 18:05 编辑MsgBox显示像这种样子的数据怎么存为CSV格式?
回复 1# joint
很简单啊,显示的数据很有规律性.假设$str保存数据内容
$str = stringreplace($str,'""','","') ;连续双引号替换为","
$str = stringreplace($str,' ','","');空格替换为"," 非常感谢,刚接触这类事情,这方面一点经验都没有。 本帖最后由 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个字的话,就会多一个空格出来,这样替换后成了下面的情况:
这个该怎么解决合适?谢谢。
我先试试把两个空格替换为一个空格,然后再替换为逗号看行不行。 回复 2# tubaba
可以了,谢谢。 @tubaba
又出状况了。
其实,已经把出现多个空格的情况也考虑了,昨天测试正常,今天又出现了这情况,还不知是怎么回事。
$sText = stringreplace($sText,' ',' ');空格替换为","
$sText = stringreplace($sText,' ',' ');空格替换为","
$sText = stringreplace($sText,' ',' ');空格替换为","
$sText = stringreplace($sText,'',' ');空格替换为","
$sText = stringreplace($sText,' ','","');空格替换为"," 本帖最后由 joint 于 2017-7-3 10:40 编辑
原因应该是在不该有空格的地方出现了空格,也就是在*ST后面出现了空格,代码把该空格替换为逗号后发生了错位。这个要增加新的判断条件,是不是应该这样写:
$sText = stringreplace($sText,'*ST ','*ST') 本帖最后由 joint 于 2017-7-3 12:50 编辑
又出状况了,问题可真多。这种情况有没有比较统一的处理方式啊?出一种情况就加个条件感觉比较笨啊,这样下去要没完没了了。有没有办法定位,比如对在时间后4个字符长度内的空格不转换。
本帖最后由 yamakawa 于 2017-7-3 14:20 编辑
替换条件比较多的话,可以考虑正则替换StringRegExpReplace你把几个数据都打包了上传我看看。。。。
大概明白你意思了。。第二个文字列中可能存在空格对吧,,,,有点不好弄啊。。。。 看看学习下大神的解决办法~~~ 还没想到好办法,只好暂时用这种笨办法了。
$sText = stringreplace($sText,'五 ','五');
$sText = stringreplace($sText,'粮 ','粮');
$sText = stringreplace($sText,'南 ','南');
$sText = stringreplace($sText,'京 ','京');
$sText = stringreplace($sText,'万 ','万');
$sText = stringreplace($sText,'*ST ','*ST');
替换条件比较多的话,可以考虑正则替换你把几个数据都打包了上传我看看。。。。
大概明白你意思了。。第 ...
yamakawa 发表于 2017-7-3 13:26 http://www.autoitx.com/images/common/back.gif
正则还没顾上学呢。
数据在上面附件里。 数据情况有点乱,标准的是4个汉字,但有的是3个汉字,3个汉字又分多种情况,有的空格在第一个,有的在第二个,有的在最后,ST股也是这样。所以,麻烦的是所有名称是3个字的都有可能出现1种以上的问题。 本帖最后由 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 试试这个代码可以不可以
yamakawa 发表于 2017-7-3 15:05 http://www.autoitx.com/images/common/back.gif
谢谢,数据在变量$sText里,这样直接读有没有问题?
Local $Txt = FileRead($sText)
如果没问题的话,执行后好像没输出,打开的excel也是空的。