gpt4 book ai didi

python - Django CSV 导入 - 使用 æ、ø、å(丹麦语字符)和空格时仅导入第一个数据行

转载 作者:行者123 更新时间:2023-11-29 15:30:00 25 4
gpt4 key购买 nike

我在 Django 中制作了一个带有 CSV 导入实现的系统。但是,当数据的第一列包含丹麦语特殊字符 Æ、Ø 和 Å 或空格时,它仅插入第一个数据行。

我读到我正在使用的 Python 中的 csv 模块不支持 Unicode 输入。我为将 csv 文件与 Django 中的数据库模型连接的函数提供了下面的代码。

注:数据库是Mysql制作的

views.py

def opret_hold(request):
prompt = {
"hold": "Rækkefølgen på inholdet af din .csv fil skal være: ma, fornavn, efternavn, hold, deling"
}

if request.method == 'GET':
return render(request, 'evalsys/admin/upload/opret_hold.html', prompt)
try:
csv_file = request.FILES['file']

if not csv_file.name.endswith('.csv'):
messages.warning(request, 'Dette er ikke en .csv fil.')

data_set = csv_file.read().decode("utf-8")
io_string = io.StringIO(data_set)
for row in csv.reader(io_string, delimiter=','):
for column in csv.reader(io_string, delimiter=','):
__, created = Hold.objects.get_or_create(
holdnavn=column[0],
slug=column[0],
)
created = Medarbejder.objects.get_or_create(
delingnavn_id=column[1],
slug=column[2],
ma=column[2],
fornavn=column[3],
efternavn=column[4],
holdnavn_id=Hold.objects.get(pk=(column[0])),
)

if request.method == 'POST' and HttpResponse.status_code == 200:
messages.success(request, "Hold oprettet.")

finally:
context = {}
return render(request, 'evalsys/admin/upload/opret_hold.html', context)

opret_hold.html

<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" required>
<p>Dette system acceptere kun .csv filer.</p>
<button type="submit" class="btn" id="generel-btn">Upload</button>
<br>
</form>

最佳答案

问题出在你的 for 循环中,你编写了 2 个仅间接访问行的循环

data_set = csv_file.read().decode("utf-8")
io_string = io.StringIO(data_set)
for row in csv.reader(io_string, delimiter=','):
hold, created = Hold.objects.get_or_create(
holdnavn=row[0],
slug=row[0],
)
medarbejder,created = Medarbejder.objects.get_or_create(
delingnavn_id=row[1],
slug=row[2],
ma=row[2],
fornavn=row[3],
efternavn=row[4],
holdnavn_id=hold,
)

关于python - Django CSV 导入 - 使用 æ、ø、å(丹麦语字符)和空格时仅导入第一个数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58799572/

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