【问题标题】:Python: skip lines and split into columns text filePython:跳过行并拆分为列文本文件
【发布时间】:2021-08-04 17:10:39
【问题描述】:

我有一个 txt 文件,看起来像这样:


说明
说明
0 0 170. 170. 40.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18.09228
1 0 170. 170. 70.80 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12.09736
....
1 0 170. 170. 06.48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12.09736


我尝试过使用:

data = np.loadtxt('Filename.txt', comments='#', delimiter=' ', skiprows=2)

但我收到错误消息“无法将字符串转换为浮点数:”可能会发生,因为在数据中,列之间的空格数不同。

我也试过了:

with open('Filename.txt') as f:  
   data = f.readlines()[2:] 

但后来我不知道如何将其拆分为列。 我只需要一个在“描述”之后带有数字的数组来进行一些计算。 如果有人能提出解决方案,我将不胜感激。

【问题讨论】:

  • 你能描述一下输出应该是什么样子吗?
  • [line.split(" ") for line in data] 这会让您更接近您的需求。
  • 我敢打赌,问题出在字符串 (170.) 这不是一个数字,所以 np.load txt 在这里可能会失败。 Samusa 发布的内容会将您的文本分成几列,但您还需要手动修复所有不以数字结尾的数字。即 170. -> 170.0
  • 预期的输出/行为是什么?
  • 我只想要一个由这些数字组成的数组。

标签: python numpy split txt


【解决方案1】:

如果文件的值由空格分隔,您可以执行以下操作:

contents=[]
with open('Filename.txt') as f:
   for line in f.readlines():
     contents.append(line.rstrip().split(' '))

跳过前两列:

contents=[]
with open('Filename.txt') as f:
  for line in f.readlines():
    line=line.rstrip().split(' ')
    if len(line)<2:
      continue
    contents.append(line[2:])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 2017-02-11
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2018-08-25
    相关资源
    最近更新 更多