当前在线人数19997
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
python code help: 读入csv file的bug
[版面:葵花宝典][首篇作者:capry] , 2021年01月09日14:01:52 ,1204次阅读,38次回复
来APP回复,赚取更多伪币 关注本站公众号:
[首页] [上页][下页][末页] [分页:1 2 ]
capry
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: capry (IA), 信区: Programming
标  题: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 14:01:52 2021, 美东)

最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv module,
做了以下小练习:

目的是读入 csv file, 计算column number, 然后输出每一行的第二列

具体code 和 输出如下:


>>> import csv
>>> with open('test.1.csv','r') as infile:
...     text=csv.reader(infile,delimiter=',', quotechar='|')
...     fields=len(list(text)[0])
...     print fields
...     for row in text:
...             print row[1]
...
5


这里的5 是column number (fields), 但是我不理解为什么row 的output 没有出来
???

如果我delete 跟fields相关的code,会得到row的output:

>>> with open('test.1.csv','r') as infile:
...     text=csv.reader(infile,delimiter=',', quotechar='|')
...     for row in text:
...             print row[1]
...
year
year2021
year10

难道我需要两次open file吗?

多谢!



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 216.]

 
fantasist
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: fantasist (一), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 18:14:55 2021, 美东)

多按一次回车试试?
最好在jupyter notebook里写这种adhoc脚本,有神器别不用。不推荐直接在cmd line
里打代码。


--
☆ 发自 iPhone 买买提 1.24.11
--
※ 修改:·fantasist 於 Jan  9 18:15:57 2021 修改本文·[FROM: 2600:1700:4384:4]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:1700:4384:]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 18:32:19 2021, 美东)

他这print 看着是python 2。
现在都应该学python 3吧。


【 在 fantasist(一) 的大作中提到: 】
<br>: 多按一次回车试试?
<br>: 最好在jupyter notebook里写这种adhoc脚本,有神器别不用。不推荐直接在cmd
line
<br>: 里打代码。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
lightroom
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: lightroom (吃一条鱼,思考一个问题,法号三丰), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 20:04:30 2021, 美东)

你的有len那行,把text的generator跑了一次清光了。

【在  capry(IA)的大作中提到:】
:最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv
module, 做了以下小练习:


--
※ 来源:·Android 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2604:ca00:100:6]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 20:33:16 2021, 美东)

list清的?我也觉得这里有问题。不过不知道list有这个效果。


【 在 lightroom(吃一条鱼,思考一个问题,法号三丰) 的大作中提到: 】
<br>: 你的有len那行,把text的generator跑了一次清光了。
<br>: :最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv
<br>: module, 做了以下小练习:
<br>: :
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
sanwadie
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: sanwadie (三娃爹), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 22:01:34 2021, 美东)

python就是这样,功能很fancy,副作用很无语。这种情况,还不如自己写几行代码

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: list清的?我也觉得这里有问题。不过不知道list有这个效果。
: <br>: 你的有len那行,把text的generator跑了一次清光了。
: <br>: :最近需要自动读入一系列的csv file 进入word 文档,所以在学习python
csv
: <br>: module, 做了以下小练习:
: <br>: :
: <br>



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 198.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 22:57:35 2021, 美东)

有经验了你会感觉到哪些语法risky,自动就不会那么写了。c和Cpp也都一样。时间长
了不会对语法有多少印象。


【 在 sanwadie(三娃爹) 的大作中提到: 】
<br>: python就是这样,功能很fancy,副作用很无语。这种情况,还不如自己
写几行
代码
<br>: csv
<br>



--
※ 修改:·guvest 於 Jan  9 23:13:36 2021 修改本文·[FROM: 72.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
sanwadie
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: sanwadie (三娃爹), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 23:13:41 2021, 美东)

仔细想了一下,好像如你所说。不光是语法,还有那些核心库。又想起那个著名的 c
printf 。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 有经验了你会感觉到哪些语法risky,自动就不会那么写了。c和Cpp也都一样。
: <br>: python就是这样,功能很fancy,副作用很无语。这种情况,还不如自己
: 写几行
: 代码
: <br>: csv
: <br>



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 198.]

 
fantasist
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: fantasist (一), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sat Jan  9 23:15:53 2021, 美东)

还是你看的仔细。我还以为这个csv reader类似于file.readlines()

【 在 lightroom (吃一条鱼,思考一个问题,法号三丰) 的大作中提到: 】
: 你的有len那行,把text的generator跑了一次清光了。
: :最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv
: module, 做了以下小练习:
: :




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:1700:4384:]

 
chebyshev
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: chebyshev (......), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 03:43:13 2021, 美东)

python的list刚开始看巨牛无比。后来看,list能造出来的语法糖,数不胜数。
除非只用python一种的,我觉得没法深入钻研。我都是绕着走,能用numpy array就用
numpy。
【 在 sanwadie (三娃爹) 的大作中提到: 】
: 仔细想了一下,好像如你所说。不光是语法,还有那些核心库。又想起那个著名的 c
: printf 。




--
※ 修改:·chebyshev 於 Jan 10 03:44:00 2021 修改本文·[FROM: 72.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
modsys
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: modsys (魔德西), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 09:03:06 2021, 美东)

为什么不用pandas read_csv ?好用的多啊

【 在 capry (IA) 的大作中提到: 】
: 最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv
module,
:  做了以下小练习:
: 目的是读入 csv file, 计算column number, 然后输出每一行的第二列
: 具体code 和 输出如下:
: >>> import csv
: >>> with open('test.1.csv','r') as infile:
: ...     text=csv.reader(infile,delimiter=',', quotechar='|')
: ...     fields=len(list(text)[0])
: ...     print fields
: ...     for row in text:
: ...................




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
staftermath
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: staftermath (彦清风), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 13:50:12 2021, 美东)

+1
大多数情况下能解决问题。
看起来楼主像是新用户,先试试read_csv也无妨。

遇到坑了再考虑高阶的就行。

【 在 modsys (魔德西) 的大作中提到: 】
: 为什么不用pandas read_csv ?好用的多啊
: module,



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
capry
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: capry (IA), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 13:58:07 2021, 美东)

没太明白这个“generator” 的概念。能再多解释下吗?

的确是python新手,对着Google照猫画虎阶段。。。


【 在 lightroom (吃一条鱼,思考一个问题,法号三丰) 的大作中提到: 】
: 你的有len那行,把text的generator跑了一次清光了。
: :最近需要自动读入一系列的csv file 进入word 文档,所以在学习python csv
: module, 做了以下小练习:
: :



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 216.]

 
capry
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: capry (IA), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 13:59:10 2021, 美东)

谢谢推荐。。。

【 在 modsys (魔德西) 的大作中提到: 】
: 为什么不用pandas read_csv ?好用的多啊
: module,



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 216.]

 
chebyshev
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: chebyshev (......), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 14:56:09 2021, 美东)

def gen(N):
    for i in range(N):
        print("counter=",i)
        yield i

g1 = gen(6)
这个generator g1包括六个位置,就是那个i 。
next(g1)会返回不同调用时候的i。

关键在于,gen这个函数在其内部,知道它被调用了几次。

但是你用了list(g1),
然后next(g1)会报StopIteration。这个信息就没了。
list的这个作用我也是才知道。

你试着用别的办法,实现一下一个函数内部知道它被调用了几次,
然后print这个次数,可能就理解了。

有了内部可以知道自己被调用多少次的函数,理论上可以用来消除所有的for loop。
这是个数学定理。(我忘了)好象是编译技术早期的一个什么标准型。
【 在 capry (IA) 的大作中提到: 】
: 没太明白这个“generator” 的概念。能再多解释下吗?
: 的确是python新手,对着Google照猫画虎阶段。。。





--
※ 修改:·chebyshev 於 Jan 10 15:01:46 2021 修改本文·[FROM: 72.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
NGale
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: NGale (马氏若姆), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 18:39:20 2021, 美东)

同推荐pandas的read_csv,还有适用范围更广的read_table。CSV文件格式太灵活:有
的有quote,有的quote可以省略,有的用逗号,有的不用(虽然CSV定义是用逗号)。
自己写parser会被折腾死。

yield是为了方便地使用function构造Iterator,就是个语法糖。因为function本身没
有状态变量,不能根据调用次数逐个返回数值,所以就有了yield。在function中使用
yield,调用该function时会返回一个Iterator(generator也是Iterator),这个
Iterator的内部已经根据你的function定义构造好了。其实你完全可以自己写一个
Iterator class。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 17 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 20:14:35 2021, 美东)

List 清generator,其design motivation 是什麼。


【 在 NGale(马氏若姆) 的大作中提到: 】
<br>: 同推荐pandas的read_csv,还有适用范围更广的read_table。CSV文件格式太灵
活:有
<br>: 的有quote,有的quote可以省略,有的用逗号,有的不用(虽然CSV定义是用逗
号)。
<br>: 自己写parser会被折腾死。
<br>: yield是为了方便地使用function构造Iterator,就是个语法糖。因为function
本身没
<br>: 有状态变量,不能根据调用次数逐个返回数值,所以就有了yield。在function
中使用
<br>: yield,调用该function时会返回一个Iterator(generator也是Iterator),这个
<br>: Iterator的内部已经根据你的function定义构造好了。其实你完全可以自己写一个
<br>: Iterator class。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
fantasist
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 18 ]

发信人: fantasist (一), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 20:36:39 2021, 美东)

看文档就知道了。这个reader是一个定义了__next__的object,其实跟文件的readline
差不多,但没有提供reset的功能。list从头next到尾,这个reader就停在最终的状态
了。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: List 清generator,其design motivation 是什麼。
: : 同推荐pandas的read_csv,还有适用范围更广的read_table。CSV文件格式太灵
: 活:有
: : 的有quote,有的quote可以省略,有的用逗号,有的不用(虽然CSV定义是用逗
: 号)。
: : 自己写parser会被折腾死。
: : yield是为了方便地使用function构造Iterator,就是个语法糖。因为function
: 本身没
: : 有状态变量,不能根据调用次数逐个返回数值,所以就有了yield。在function
: 中使用
: ...................




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:1700:4384:]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 19 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 20:44:33 2021, 美东)

我的问题不是其原理。想知道为何如此设计。取舍怎么考虑的。


【 在 fantasist(一) 的大作中提到: 】
<br>: 看文档就知道了。这个reader是一个定义了__next__的object,其实跟文
件的
readline
<br>: 差不多,但没有提供reset的功能。list从头next到尾,这个reader就停
在最终
的状态
<br>: 了。
<br>

--
※ 修改:·guvest 於 Jan 10 20:44:58 2021 修改本文·[FROM: 72.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
staftermath
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 20 ]

发信人: staftermath (彦清风), 信区: Programming
标  题: Re: python code help: 读入csv file的bug
发信站: BBS 未名空间站 (Sun Jan 10 22:39:50 2021, 美东)

这跟list的design motivation 没关系,
list设计就是从iterable构建列表,做法就是过一遍iterable。
generator是一种iterable,然而只能过一遍。所以list完了之后就关闭了。



【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: List 清generator,其design motivation 是什麼。
: <br>: 同推荐pandas的read_csv,还有适用范围更广的read_table。CSV文件格式太灵
: 活:有
: <br>: 的有quote,有的quote可以省略,有的用逗号,有的不用(虽然CSV定义是用逗
: 号)。
: <br>: 自己写parser会被折腾死。
: <br>: yield是为了方便地使用function构造Iterator,就是个语法糖。因为
function
: 本身没
: <br>: 有状态变量,不能根据调用次数逐个返回数值,所以就有了yield。在
function
: 中使用
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

[首页] [上页][下页][末页] [分页:1 2 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996