2012-03-17 31 views
0

我使用下面的代码在Python中导入数据:Python的数据导入

one=[] 
two=[] 
three=[] 
four=[] 
five=[] 
six=[] 
x=0 
for line in open('text.txt', 'r'): 
    if x==2: 
     column0, column1, column2, column3, column4, column5 = line.split(',') 
else: 
    column0, column1, column2, column3, column4, column5 = line.split(' ') 
    one.append(column0) 
    two.append(column1) 
    three.append(column2) 
    four.append(column3) 
    five.append(column4) 
    six.append(column5) 
    x=x+1 

此代码导入这个文本文件:

1 2 3 4 5 6 
1 2 3 4 5 6 
1,2,3,4,5,6 
1 2 3 4 5 6 
1 2 3 4 5 6 

但我有如何导入这么多麻烦以下

1 2 3 4 5 6 
1 2 3 4 5 6 
1,2,3, 
4,5,6 
1 2 3 4 5 6 
1 2 3 4 5 6 

即使数据在第三行有一个中断我希望它导入与第一个文本相同的方式文件中。我尝试按行导入,然后使用第三行的变量数量,但我无法让它工作。

有谁知道任何资源或示例或可以帮助吗?谢谢!

+0

总是应该有六个项目每套 – corn3lius 2012-03-17 03:14:15

+0

我想我明白他在问什么。他希望将每第六个元素加载到相应的阵列中。 – Matt 2012-03-17 03:20:00

+0

每六个元素,不是每六个元素。 – 2012-03-17 03:32:54

回答

1

继承人之一,得到线通行权......它不是一个完整的答案,但我认为它解决了无论你的问题可能是

fh = open('Documents/import.txt').read() 

for line in fh.split('\n'): 
    print line.strip() 
    splits = line.split() 
    if len(splits) ==1 and splits[0]== line.strip(): 
     splits = [item for item in line.strip().split(',') if item] 
    print splits 

哎呦... didnt读你想试试这个

什么
fh = open('Documents/import.txt').read() 
the_list = [] 
for line in fh.split('\n'): 
    print line.strip() 
    splits = line.split() 
    if len(splits) ==1 and splits[0]== line.strip(): 
     splits = line.strip().split(',') 
    if splits:the_list.append(splits) 

for i in range(len(the_list)): 
    print the_list[i] 
    if the_list[i][-1]=='': 
     the_list[i].pop(-1) 
     the_list[i].extend(the_list[i+1]) 
     i += 1 

print the_list 
+0

你介意解释为什么你添加第二个循环:'对于我在范围内(len(the_list)): print the_list [i] if the_list [i] [ - 1] =='': the_list [i ] .pop(-1) the_list [i] .extend(the_list [i + 1]) i + = 1' – user1026987 2012-03-18 14:21:14

1
  1. 您已经问了StackOverflow上的九个问题,并且只接受了其中一个答案?请对陌生人的好意和accept some answers表示感谢。

  2. 说“我试过了,它不起作用”很好,但是如何失效?错误信息是什么?如果程序出乎意料地行为,你究竟期待什么?

  3. 对于阅读逗号(空格?)分隔的数据,我想你实际上是想要python's csv module。通过delimiter选项的适当参数,它将读取以空格分隔的数据,或者您可以在读取数据之前用逗号替换空格。
+0

我不认为'csv'会在这里工作,因为数据不是表格,而且有不一致的分隔符。 – 2012-03-17 03:18:36

+0

如果用'不是表格'表示它不是一个矩形的数字数组,它实际上并不重要 - 'csv'会根据需要将每一行分割成许多标记。如果某些行比其他行具有更多的令牌,则无关紧要。在开始之前,可以使用每次处理运行(用逗号替换空格)修复不一致的分隔符。 – 2012-03-17 03:21:48

+0

“不是表格”我的意思是“一行可能分成多行”,请参见第二个示例。 'csv'将和他当前的代码做同样的事情,并将数据读取为每行两列三列。 – 2012-03-17 03:32:08

1

for line in open('text.txt', 'r'):遍历文件中的行。它不关注你的逗号。

如果要按元素而不是按行迭代,则必须使用不同的循环。

您可能想要阅读这个问题:How to read numbers from file in Python?它显示了如何一次读取数字,忽略换行符。你需要pass a parameter to the split function来告诉它跳过逗号和空格。

P.S.在您当前的代码中,if x==2:什么都不做。如果你真的想要数线,你需要enumerate函数。