【问题标题】:Parse strings of numbers separated by whitespace to list of lists python将由空格分隔的数字字符串解析为列表 python
【发布时间】:2020-02-12 18:17:15
【问题描述】:

我有一个txt文件如下:

12 13 14 15
78 79 80 90
45 63 29 78

我想将其转换为列表列表以便拥有:

[[12,13,14,15],[78,79,80,90],[45,63,29,78]]

【问题讨论】:

  • numpy的使用怎么样? stackoverflow.com/questions/6081008/…
  • 澄清一下,您是要转换为 CSV 还是 python 列表列表?
  • 实际上我认为我需要将其转换为 csv 文件才能这样做,但实际上我需要将其转换为列表列表@HalJarrett
  • @stud_eco 您应该编辑您的问题以反映这一点。
  • 除此之外,您能澄清一下问题所在吗?已经有很多关于这个主题的资源。

标签: python csv


【解决方案1】:
import csv

# read the data (space delimited)
with open('data.txt',newline='') as f:
    data = list(csv.reader(f,delimiter=' '))

# data is list of lists, but strings
print(data)

# convert to integers if needed
ints = [[int(n) for n in row] for row in data]
print(ints)

# write back out as true CSV
with open('data.csv','w',newline='') as f:
    csv.writer(f).writerows(data) # data or ints will write correctly.

输出:

[['12', '13', '14', '15'], ['78', '79', '80', '90'], ['45', '63', '29', '78']]
[[12, 13, 14, 15], [78, 79, 80, 90], [45, 63, 29, 78]]

数据.csv:

12,13,14,15
78,79,80,90
45,63,29,78

【讨论】:

  • 我得到了超过 IOPub 数据速率。笔记本服务器将暂时停止向客户端发送输出以避免崩溃。要更改此限制,请设置配置变量 --NotebookApp.iopub_data_rate_limit。当前值:NotebookApp.iopub_data_rate_limit=1000000.0(字节/秒) NotebookApp.rate_limit_window=3.0(秒)
  • @stud_eco 没关系,这只是意味着你打印到标准输出太多了。
猜你喜欢
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2021-07-13
  • 2012-06-20
  • 1970-01-01
相关资源
最近更新 更多