![](/img/trans.png)
[英]Combining two 1D arrays of different data types into 1 2D array in PYTHON
[英]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.