gpt4 book ai didi

python - 在Python 3.X中一次从url一行读取csv

转载 作者:行者123 更新时间:2023-12-02 03:43:48 26 4
gpt4 key购买 nike

我必须将在线 csv 文件读入 postgres 数据库,在这种情况下,我在正确读取在线 csv 文件时遇到一些问题。

如果我只是导入文件,它会读取为字节,所以我必须对其进行解码。然而,在解码过程中,似乎整个文件都变成了一个长字符串。

# Libraries
import csv
import urllib.request

# Function for importing csv from url
def csv_import(url):
url_open = urllib.request.urlopen(url)
csvfile = csv.reader(url_open.decode('utf-8'), delimiter=',')
return csvfile;

# Reading file
p_pladser = csv_import("http://wfs-kbhkort.kk.dk/k101/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=k101:p_pladser&outputFormat=csv&SRSNAME=EPSG:4326")

当我尝试逐行读取导入的文件时,它一次只读取一个字符。

for row in p_pladser:
print(row)
break

['F']

你能帮我找出哪里出了问题吗?我使用的是 Python 3.6。

编辑:根据请求我的 R 解决方案

# Loading library
library(RPostgreSQL)

# Reading dataframe
p_pladser = read.csv("http://wfs-kbhkort.kk.dk/k101/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=k101:p_pladser&outputFormat=csv&SRSNAME=EPSG:4326", encoding = "UTF-8", stringsAsFactors = FALSE)

# Creating database connection
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "secretdatabase", host = "secrethost", user = "secretuser", password = "secretpassword")

# Uploading dataframe to postgres database
dbWriteTable(con, "p_pladser", p_pladser , append = TRUE, row.names = FALSE, encoding = "UTF-8")

我必须上传 10,000 到 100,000 行的多个表格,在 R 中总共需要 1-2 秒才能上传全部表格。

最佳答案

csv.reader 期望作为参数的是类似文件的对象而不是字符串。您这里有 2 个选择:

  • 要么将数据读入字符串(就像您当前所做的那样),然后使用 io.StringIO 围绕该字符串构建一个类似文件的对象:

    def csv_import(url):
    url_open = urllib.request.urlopen(url)
    csvfile = csv.reader(io.StringIO(url_open.read().decode('utf-8')), delimiter=',')
    return csvfile;
  • 或者您在 urllib.request 提供的二进制流周围使用 io.TextIOWrapper:

    def csv_import(url):
    url_open = urllib.request.urlopen(url)
    csvfile = csv.reader(io.TextIOWrapper(url_open, encoding = 'utf-8'), delimiter=',')
    return csvfile;

关于python - 在Python 3.X中一次从url一行读取csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com