由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 读CSV就跟字符串翻转一样
相关主题
问个matlab 数据读入的问题一个搞统计的对C#的第一印象
yacc/bison的调试和分析工具?如何动态定义类和方法
i +++ j玩具语言其实很容易实现的
any lexer/parser enthusiasts here?FP的教材是怎么误导人的
How to read a simple csv file in C++?再晒个我的开源NoSQL项目
free C++ lib/code for XML parser on Linux?C++如何实现graph?
C++ 屏幕输入问题弱弱的问问跟hash有关的问题 (转载)
关于C++中 extern "C"的问题。C++ 有现成的 hashtable 库吗?
相关话题的讨论汇总
话题: csv话题: br话题: 简单话题: 回车话题: slash
进入Programming版参与讨论
1 (共1页)
p***o
发帖数: 1252
1
好像不调库自己写很简单,其实连corner case在哪儿都不知道。
g****t
发帖数: 31659
2
如果是实际操作,反正我不搞parse。坑太多。
路线是:
1.找库用。
2.检查。
除了分文件或者读内存这一步,剩下的不会自己写。

【在 p***o 的大作中提到】
: 好像不调库自己写很简单,其实连corner case在哪儿都不知道。
m******r
发帖数: 1033
3
我都是找库用, 从来没写过程序, 因为我也不会写程序。
不过用的库多了, 谁好谁坏, 也很有心得 。
别说csv了, pdf, xls,adoby,xml我都分解过。
你们谁分解过xml ? 我一个人干了一个月,当然是磨洋工了。 其实只要肯花时间,都
能弄出来。 我说不如找实习干, 说的就是这个意思,可以实验不同方案。
还有分解家庭住址,肯花钱,肯定有第三方厂商给你弄出来; 不肯花钱,免费的软件
到处都是。 但要做到精益求精, 还得自己花时间倒腾。
以上都是数据爱好者瞎叨叨, 一家之言, 别当真。
f*******t
发帖数: 7549
4
不知道那个楼主为什么非要坚持c/c++。既然单机、数据量不是特别大,这种事情就应
该找更高级的语言,有特殊性能问题再想别的办法。我常用的面试题里正好有一步要
split string by comma,这些年面过几百个人,选择用C/C++的candidate在这里挣扎
的概率大于80%,剩下来的勉强手写一个for loop。另一步用一个HashMap解决最简单,
C++直接提供了unordered_map,C嘛只能呵呵了。看简历不少人有多年硬件公司的经验
。希望他们原公司的开发环境舒服点,别每天花时间在简单的任务上给自己找别扭,或
者没事重复造轮子。
推荐perl甚至awk之类的有点过了,学习曲线太长,而且写出来的东西基本不可维护。
我看了一下,python原生支持csv,所以不妨先试试系统可能自带的Python环境,也别
上来就Pandas。
Go本身性能可以,用自带的csv package出现surprise的可能性很小。综合考虑下也是
不错的选择。要自己安装的话也只是去官网下载tar,解压到文件夹,设置PATH三步。
开源c++库别的不说,git clone以后能直接编译的恐怕不多。一看readme,先得装一堆
libxxxx,然后编译继续不过,不断google error message然后安装没有document的
libyyyy。我觉得程序员有时间应该花在有意义的事上,不然就去享受生活,何苦折腾
这些。
工作中生产力最低的就是那种觉得自己手写csv parser了不起的,代码写完拍拍屁股走
人,给未来留下一堆堆的坑。
n******t
发帖数: 4406
5
又來了,又是覺得這件事很難搞的。。。
我就要看看這麼一個東西到底要扔出多少輪子出來。。

【在 f*******t 的大作中提到】
: 不知道那个楼主为什么非要坚持c/c++。既然单机、数据量不是特别大,这种事情就应
: 该找更高级的语言,有特殊性能问题再想别的办法。我常用的面试题里正好有一步要
: split string by comma,这些年面过几百个人,选择用C/C++的candidate在这里挣扎
: 的概率大于80%,剩下来的勉强手写一个for loop。另一步用一个HashMap解决最简单,
: C++直接提供了unordered_map,C嘛只能呵呵了。看简历不少人有多年硬件公司的经验
: 。希望他们原公司的开发环境舒服点,别每天花时间在简单的任务上给自己找别扭,或
: 者没事重复造轮子。
: 推荐perl甚至awk之类的有点过了,学习曲线太长,而且写出来的东西基本不可维护。
: 我看了一下,python原生支持csv,所以不妨先试试系统可能自带的Python环境,也别
: 上来就Pandas。

g****t
发帖数: 31659
6
【1】你给的split string by comma面试题,想必是给定windows格式的csv文件,而且
还不
能是excel写出来的,以及notpad写出来的,还不能有unicode,还不能有forward slash
,还不能有行中的回车。
【2】不然,这些情况都考虑下来,作为面试题,难度高了点。不太可能不查资料都记
住。也没这个必要。
【3】因此,经过上面一段推理。如果是面试场景,被面试者应该有能力自行假设【1】
所讲的的最简化假设。
【4】
在【1】的假设下用c写,也就20行。白板写不出,就说明不熟悉c标准库。最简单的,
fread然后fgetc,读一个
character,指针走一位。分支循环查一下comma完事。如果这都写不出,那
确实是不合格。
y****w
发帖数: 3747
7
需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。
怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部分现成库干掉
,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是当练习re的,
这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。

slash
就应
挣扎
单,
经验
,或
护。
也别

【在 g****t 的大作中提到】
: 【1】你给的split string by comma面试题,想必是给定windows格式的csv文件,而且
: 还不
: 能是excel写出来的,以及notpad写出来的,还不能有unicode,还不能有forward slash
: ,还不能有行中的回车。
: 【2】不然,这些情况都考虑下来,作为面试题,难度高了点。不太可能不查资料都记
: 住。也没这个必要。
: 【3】因此,经过上面一段推理。如果是面试场景,被面试者应该有能力自行假设【1】
: 所讲的的最简化假设。
: 【4】
: 在【1】的假设下用c写,也就20行。白板写不出,就说明不熟悉c标准库。最简单的,

g****t
发帖数: 31659
8
面试的人自己也未必清楚文本文件,csv怎么回事。
简化情况,不想太复杂。


: 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。

: 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部
分现成
库干掉

: ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是
当练习
re的,

: 这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。

: slash

: 就应

: 挣扎

: 单,

: 经验

: ,或



【在 y****w 的大作中提到】
: 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。
: 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部分现成库干掉
: ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是当练习re的,
: 这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。
:
: slash
: 就应
: 挣扎
: 单,
: 经验

f*******t
发帖数: 7549
9
你又过度脑补了,实际情况远没那么复杂……
其实题目很简单,我也是过来人,知道刷题不易,出一道自己几个月不练一小时内写不
对的难题纯粹是有心理疾病。input是个简单的string,没有塞一堆无意义的corner
case为难candidate。只要稍微问一下,我就会很爽快地告诉他们,只有一行,没有奇
怪的字符,没有corner case……啥都不问上来吭哧写的一般会自己卡住,过一会儿慌
了,fail的可能性比较大。Problem probing是很重要的考量方向,这个直接跟实际工
作能力相关,比了解csv重要得多。公司里在我熟悉的组里,真正需要处理乱七八糟的
csv的大概只有管ads offline conversion的,有很多vendor上传的信息,可想而知是
有很多坑的。绝大部分人不会碰到调用已有lib解决不了的问题,所以问这个是浪费时
间。
用C的我实在是无力吐槽。如果选择用strtok去split string,印象中只有一个人写的
看上去是对的。解决另一步用HashMap最简单,想到这个的经常会定义一个全局的char
map[128],hardcode size看着很难受。这些用C的人就没个handy的hashmap lib么?

slash

【在 g****t 的大作中提到】
: 面试的人自己也未必清楚文本文件,csv怎么回事。
: 简化情况,不想太复杂。
:
:
: 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。
:
: 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部
: 分现成
: 库干掉
:
: ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是
: 当练习
: re的,

1 (共1页)
进入Programming版参与讨论
相关主题
请教一个编程问题How to read a simple csv file in C++?
其实真神的意思是:学习python就是几个小时的事,吵啥?free C++ lib/code for XML parser on Linux?
C++ STL的unordered_map, unordered_set,map,set很慢C++ 屏幕输入问题
FP就是忽悠关于C++中 extern "C"的问题。
问个matlab 数据读入的问题一个搞统计的对C#的第一印象
yacc/bison的调试和分析工具?如何动态定义类和方法
i +++ j玩具语言其实很容易实现的
any lexer/parser enthusiasts here?FP的教材是怎么误导人的
相关话题的讨论汇总
话题: csv话题: br话题: 简单话题: 回车话题: slash