我有一些用于下载 CSV 文件的 URL。
import pandas as pd
import io
import requests
url1 = 'https://www.ons.gov.uk/generator?format=csv&uri=/economy/economicoutputandproductivity/output/timeseries/' + 'k22a' + '/diop'
url2 = 'https://www.ons.gov.uk/generator?format=csv&uri=/economy/economicoutputandproductivity/output/timeseries/' + 'k24c' + '/diop'
s=requests.get(url).content
c=pd.read_csv(io.StringIO(s.decode('utf-8')))
当我使用
url1
时,第4条记录中有一个','
。但有些网址 (url2
) 没有这种意外的分隔符。这导致了
ParserError:标记数据时出错。 C 错误:行中应有 1 个字段 5、锯2
当我尝试将 CSV 文件合并到单个数据帧中时。我如何忽略这些意外的分隔符。无论如何,前七条记录都要被删除。但我仍然收到此错误。
这个解决方案建议我们在转换为 CSV 之前预先解析每一行。由于我有很多这样的 URL,并且不确定将来会遇到哪些意外的分隔符,因此不知道如何调试。转换为 CSV 之前进行预解析可以吗?如何以这样的方式实现,以包含将来遇到的其他分隔符?
由于您不需要元数据,只需使用
skiprows
跳过它,作为一个很好的副作用,您将自动获得正确的数据类型:
url = url1
N = 7
s = requests.get(url1).content
c = pd.read_csv(io.StringIO(s.decode('utf-8')), header=0, skiprows=range(1, N+1))
输出:
Title IOP: C:MANUFACTURING: CVMSA
0 1948 25.2
1 1949 27.0
2 1950 29.0
3 1951 29.9
4 1952 28.4