我使用以下代码将数据写入csv文件:
filename = "DETAILS.csv"
f = open(filename, "a")
f.write(
school_name + "," + affiliation_no + "," + state + "," + district + ","
+ postal_address + "," + phone_no + "," + email_id + "," + web_site + ","
+ year_of_foundation + "," + date_of_opening + "," + name_of_principal + ","
+ status_of_school + "," + type_of_affiliation + "," + affiliation_period_from + ","
+ affiliation_period_to + "," + name_of_trust_society_managing_committee + "\n")
f.close()
我以这种格式获得输出:
列和数据未在csv文件中对齐。我每个条目需要一行。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
作为一般规则,当您使用CSV文件时,不应使用标准文件操作,而应使用csv
模块中的writer
和reader
类。这些类负责引号和用于分隔文件中列的字符(在您的案例中为逗号,
)。它们还可以自动正确处理数字和字符串。
所以,你的代码变成了这个:
import csv
filename = "DETAILS.csv"
f = open(filename, "a")
# create a CSV writer object:
csvwriter = csv.writer(f)
# create a list of values that will be written to the file:
dat = [school_name, affiliation_no, state, district, postal_address,
phone_no, email_id, web_site, year_of_foundation, date_of_opening,
name_of_principal, status_of_school, type_of_affiliation,
affiliation_period_from, affiliation_period_to,
name_of_trust_society_managing_committee]
# write the list to the file, using ',' automatically to separate the
# columns:
csvwriter.writerow(dat)
f.close()
但仅此一点可能不足以解决您的问题。看起来用于打开CSV文件的程序遇到一个或多个无法正确解释的字符。正如其他人所指出的那样,违规字符可能是制表符\t
或换行符\n
,但由于您似乎拒绝粘贴文件的某些实际内容,因此无法使用确实知道这一点。
但是,您可以使用以下代码用空格替换这些字符。列表推导处理数字和字符串:
dat = [val.replace("\n", " ")
.replace("\t", " ") if type(val) is str else val for val in dat]
您可以在我的代码示例中调用csvwriter.writerow(dat)
之前添加此内容,以确保在将行写入CSV文件之前删除有问题的字符。
答案 1 :(得分:0)
您的字符串似乎不是有效的csv
格式。
你应该确定这些事情:
删除无用的逗号,如果数据中有逗号,则应尝试使用双引号,例如:
data,"{'response':1}"
删除\n
,\t
字符,它们会弄乱您的数据。
查看Comma separated values from wikipedia。
希望这有帮助。