繁体   English   中英

Python:如何将数据拆分为2D数组的不同数据类型

[英]Python: How split data into different data types into 2D array

我正在尝试将下载的数据拆分为2D数组以分成不同的数据类型。 下载的数据如下所示:

000|17:40
000|17:45
010|17:50
025|17:55
056|18:00
178|18:05
202|18:10
203|18:15
190|18:20
072|18:25
013|18:30
002|18:35
000|18:40
000|18:45
000|18:50
000|18:55
000|19:00
000|19:05
000|19:10
000|19:15
000|19:20
000|19:25
000|19:30
000|19:35
000|19:40

我正在使用以下代码将其解析为二维数组:

#!/usr/bin/python

import urllib2

response = urllib2.urlopen('http://gps.buienradar.nl/getrr.php?lat=52&lon=4')
html = response.read()
htmlsplit = []

for record in html.split("\r\n"):
    htmlsplit.append(record.split("|"))

print htmlsplit

这很好用,但是正如预期的那样,它将其视为字符串。 我发现了一些分解为整数的示例。 如果双方都是整数,那就太好了。 但就我而言,它是整数| 字符串(或某种Python时间格式)

如何将其直接拆分为不同的数据类型?

像这样吗

for record in html.split("\r\n"):  # beware, newlines are treacherous!
    s = record.split("|")
    htmlsplit.append((int(s[0]), s[1]))

如果您有这么简单的数据,只需为每条记录编写一个解析器。 但是,我将添加一些try / except子句以捕获数据中可能存在的不合格行,空行等错误。 上面的代码非常脆弱。 另外,您可能只想中断\\n ,然后用strip()清理字符串(即用s[1].strip()替换s[1] )。 整数转换会自动处理它。

使用str.splitlines而不是在\\r\\n上分割使用csv模块遍历各行:

import csv
txt = '000|17:40\n000|17:45\n000|17:50\n000|17:55\n000|18:00\n000|18:05\n000|18:10\n000|18:15\n000|18:20\n000|18:25\n000|18:30\n000|18:35\n000|18:40\n000|18:45\n000|18:50\n000|18:55\n000|19:00\n000|19:05\n000|19:10\n000|19:15\n000|19:20\n000|19:25\n000|19:30\n000|19:35\n000|19:40\n'

reader = csv.reader(txt.splitlines(), delimiter='|')
column1 = []
column2 = []
for c1, c2 in reader:
    column1.append(c1)
    column2.append(c2)

您也可以使用DictReader

import StringIO
reader2 = csv.DictReader(StringIO.StringIO(txt), 
                         fieldnames=['int', 'time'], 
                         delimiter='|')

column1 = []
column2 = []
for row in reader2:
    column1.append(row['time'])
    column2.append(row['int'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM