使用Python从文件中删除最后一列

时间:2015-10-10 17:56:04

标签: python file csv numpy multidimensional-array

我基本上尝试与这个人做同样的事情,但是使用Python: How can i delete last column from my text file

如何删除我的上一栏?

我首先尝试使用numpy.loadtxt加载文本,然后忽略最终数组,但它根本不加载,因为最后一列包含字符串,而不是浮点数。

2 个答案:

答案 0 :(得分:3)

numpy.loadtxt函数有一个参数usecols。来自the documentation

numpy.loadtxt(
    fname,
    dtype=<type 'float'>,
    comments='#',
    delimiter=None,
    converters=None,
    skiprows=0,
    usecols=None,
    unpack=False,
    ndmin=0
)
Load data from a text file.
...
usecols : sequence, optional Which columns to read, with 0 being
    the first. For example, usecols = (1,4,5) will extract the
    2nd, 5th and 6th columns. The default, None, results in all
    columns being read.

当然,这假设您事先知道文件中有多少列。

例如,给定以下文件test.txt

100 test1
200 test2
300 test3

使用numpy.loadtxt("test.txt")加载会产生此错误。

$ python -c "import numpy as np;np.loadtxt('test.txt')"
Traceback (most recent call last):
  ...
  items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: test1

但是使用usecols参数可以正常工作:

$ python -c "import numpy as np;print np.loadtxt('test.txt', usecols=(0,))"
[ 100.  200.  300.]

答案 1 :(得分:2)

此代码块将文件读取为“字符串数组”

octave> java_get ("javax.xml.xpath.XPathConstants", "NODESET")
ans =

<Java object: javax.xml.namespace.QName>

octave> java_get ("javax.xml.xpath.XPathConstants", "NODESET").toString ()
ans = {http://www.w3.org/1999/XSL/Transform}NODESET

其中numpy.loadtxt('input_file.txt', dtype=str, usecols=(1,2,3,4)) 用于指定需要将哪些列读入numpy数组。

<强>输出:

usecols