首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中解析文本

在python中解析文本
EN

Stack Overflow用户
提问于 2011-08-31 13:19:09
回答 4查看 343关注 0票数 3

我有一个文本文件,它的结构如下

代码语言:javascript
复制
1\t        13249\n

2\t        3249\n

3\t        43254\n

etc...

这是一个非常简单的列表。我已经打开了文件,我可以读行了。我有以下代码:

代码语言:javascript
复制
count = 0
for x in open(filename):
    count += 1
return count

我想要做的是将每行的第一个数字分配给一个变量(比如xi),并将每行的第二个数字分配给另一个变量(yi)。目标是能够对这些数字运行一些统计数据。

在此之前,非常感谢您。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-31 13:31:24

不需要重新发明轮子..

代码语言:javascript
复制
import numpy as np

for xi, yi in np.loadtxt('blah.txt'):
    print(xi)
    print(yi)
票数 4
EN

Stack Overflow用户

发布于 2011-08-31 13:21:51

代码语言:javascript
复制
count = 0
for x in open(filename):
   # strip removes all whitespace on the right (so the newline in this case)
   # split will break a string in two based on the passed parameter
   xi, yi = x.rstrip().split("\t") # multiple values can be assigned at once
   count += 1
return count
票数 3
EN

Stack Overflow用户

发布于 2011-08-31 15:01:15

代码语言:javascript
复制
>>> with open('blah.txt') as f:
...     for i,xi,yi in ([i]+map(int,p.split()) for i,p in enumerate(f)):
...             print i,xi,yi
... 
0 1 13249
1 2 3249
2 3 43254

注意int(‘23\n') = 23

这一点更清楚:请注意,enumerate提供了一个生成器,其中包含一个计数器。

代码语言:javascript
复制
>>> with open('blah.txt') as f:
...     for count,p in enumerate(f):
...             xi,yi=map(int,p.split()) #you could prefer (int(i) for i in p.split())
...             print count,xi,yi
... 
0 1 13249
1 2 3249
2 3 43254
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7252831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档