免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5251 | 回复: 7
打印 上一主题 下一主题

关于csv文件的处理求助~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-06 18:40 |只看该作者 |倒序浏览
有两个小问题:


1。 csv文件分割的时候,如果本来的项目里包含逗号“,”的话,excel默认的输出格式使用引号扩起来。。

我想读取csv文件的每一行,然后用逗号分割,将每一项的值作为数组的元素储存起来。。现在有引号存在,如何设置可以让perl把引号中间的东西默认为一个元素呢?

我想过再excel导出成csv的时候,用分号或者其他符号作为分隔符。如果不这样做,可以实现么?

望大家指教



2。 现在我写好了一个perl文件,里面有很多函数定义(类似一个函数库),我想在另外一个perl程序中调用这些函数,不知道有没有类似c的 include header file 的形式呢,还是要把函数定义文件变成包文件,然后调用呢?

另外,我看了一些文献,如果是包调用的话,是不是每次调用函数都要写成 packagename::function的形式呢,有没有简便点的方法实现?


新手问题,望大家不要笑话。。


先行拜谢!

论坛徽章:
0
2 [报告]
发表于 2007-09-06 22:02 |只看该作者
有没有高手路过呢~~

论坛徽章:
0
3 [报告]
发表于 2007-09-06 22:28 |只看该作者
csv文件的解析和创建,请看Text::CSV_XS库。

论坛徽章:
0
4 [报告]
发表于 2007-09-07 07:03 |只看该作者
厄。。。

如果不把它当作是csv呢,因为要求在不同的平台上都可以解读,所以就把它当作一个普通的txt文档来考虑

简单的说,如果一个字串是这样的

aaaaaa,aaa,aa,a,aaa,aa,aa,"bb,dd,dde",aaded,a,a,ae,d

希望用","把他们分割储存在list里

但是要求 "bb,dd,dde" 要视为一个整体的段来储存。。

论坛徽章:
0
5 [报告]
发表于 2007-09-07 08:48 |只看该作者
1、你先看一下Text::CSV_XS模块吧,应该能够满足你所需要的要求
2、最好用包吧,到时候调试也方便,看起来也比较直接

论坛徽章:
0
6 [报告]
发表于 2007-09-07 10:26 |只看该作者
很奇怪为什么不用现成的模块呢……有什么特殊原因么。
一定要当成普通文件,自己用正则式取或者split吧。
比如

  1. @res = $_ =~ /((?:(?:"(?:(?:[^"]|"")*)")|(?:[^,]*)))/g;
复制代码

论坛徽章:
0
7 [报告]
发表于 2007-09-07 16:32 |只看该作者
谢谢ls的两位高手

不能用现成的模块,是因为,我写的程序最后要给客户使用,而客户的机器上只能保证有最基本的perl应用环境,所以尽量只使用基本perl包里的的模块或者函数。。

我看了那个csv的介绍。。似乎是还需要安装他的库才能使用。。


PS。。本来我的程序是直接从excel里面读数据的,都调试成功了,后来boss的要求变了,因为用户可能是多平台(比如linux 等等),不一定支持excel文件,所以临时改成这样的要求了

上面那个正则我研究一下。。目前没大看懂:(




可以稍微解释一下那么多括号的作用么。。

拜谢了

[ 本帖最后由 hfmouse 于 2007-9-7 16:38 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-09-08 19:01 |只看该作者
  1. @res = $_ =~ /((?:(?:"(?:(?:[^"]|"")*)")|(?:[^,]*)))/g;
复制代码



研究了一下,看明白了上面的正则表示的意义

不过还有一点不是很清楚

请问最外面的那对括号是什么用意呢?

我试了一下,发现@res里面每个元素之间都有一个空元素。。。


终于明白空元素怎么出来的了。。原来是 后面判断的 * 应该改成 +



[ 本帖最后由 hfmouse 于 2007-9-8 21:04 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP