首页 > 解决方案 > 将文本字符串转换为数据框 - 逗号分隔

问题描述

我正在尝试解析 API 的响应。获取一批电话号码,并返回有关其状态的信息,即活动与否。

这是响应的样子:

# API call

s.get('https://api/data/stuff')

# response

',MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming 
Country,Type,Date Checked\n447541255456,447541255456,Undelivered,27,Absent Subscriber,O2 
(UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447856999555,447856999555,Undelivered,1,Dead,O2
 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 
(UTC)\n447854111222,447854111222,Undelivered,1,Dead,Orange,,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 
(UTC)\n'

我可以看到这MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming Country,Type,Date Checked是标题,其余的是行。

但是我无法将其转换为我可以轻松阅读的结构,例如数据框。

输入这个问题时有一些建议的答案,使用import io等等pd.read_table,但我无法让它们中的任何一个起作用。

我想我可以将其保存为txt文件,然后以逗号分隔的 csv 格式读回。但是有没有本地熊猫或其他更简单的方法来做到这一点?

这是直接粘贴到堆栈溢出中的响应字符串,没有整理:

',MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming Country,Type,Date Checked\n447541255456,447541255456,Undelivered,27,Absent Subscriber,O2 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447856999555,447856999555,Undelivered,1,Dead,O2 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447854111222,447854111222,Undelivered,1,Dead,Orange,,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n'

标签: pythonpandas

解决方案


我相信你需要:

from io import StringIO

df = pd.read_csv(StringIO(s.get('https://api/data/stuff')))

或尝试:

df = pd.read_csv('https://api/data/stuff')

推荐阅读