gpt4 book ai didi

python - 使用 python 读取 csv 文件的列

转载 作者:行者123 更新时间:2023-12-01 06:08:35 24 4
gpt4 key购买 nike

我正在使用 python 的 CSV 模块来迭代列的行。

我需要做的是:

  1. 获取“标题”列的第一行
  2. 删除所有西类牙语字符(重音符号、Ñ)
  3. 删除单引号
  4. 最后,用破折号替换空格,并将所有内容转换为小写。

我让它与一个简单的测试文件一起使用,而不是 csv。我还设法将每个标题打印在单独的行中。

但现在我使用此代码来查看 CSV 文件(很抱歉代码非常难看,我是新手程序员):

import csv
import unicodedata
import ast

def strip_accents(s):
return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))

dic_read = csv.DictReader(open("output.csv", encoding = "utf8"))

for line in dic_read:

#print(line) #I get each line of the csv file as a dictionary.
#print(line["title"]) # I get only the "title" column on each line

line = line.replace(' ', '-').lower()
line = line.replace("´", "")
line = strip_accents(line)
fp=open("cleantitles.txt", "a")
fp.write(line)
fp.close()

我收到以下错误:

Traceback (most recent call last):
File "C:/csvreader3.py", line 15, in <module> line = strip_accents(line)
File "C:/csvreader3.py", line 7, in strip_accents
return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
TypeError: must be str, not dict

当我尝试仅执行 .replace 时,我也会遇到类似的错误。我现在明白这些方法仅适用于字符串。

我怎样才能让它发挥作用?我四处寻找一种将字典转换为字符串对象的方法,但这不起作用。

此外,也欢迎任何优化和使我的代码更具可读性的批评!

最佳答案

根据手头的新信息,我想您可能会发现此方法更简单。

使用内置函数“ map ”。我会将“map”的作用解释留给 python 文档。

这是我认为你应该做的

创建一个函数,接受一行/字典并将其处理为您想要的格式

def strip_unwanted(line):
title = str(line['title']).replace(' ', '-').replace("´", "")
title = ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
line['title'] = title
return line

with open("output.csv", encoding = "utf8") as input:
dic_entries = csv.DictReader(input)
# use the 'map' function
new_entries = map(strip_unwanted, dic_entries)

with open('some.csv', 'wb') as output:
writer = csv.DictWriter(output)
writer.writerows(new_entries)

关于python - 使用 python 读取 csv 文件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884737/

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