python - [帮助]从csv文件中提取并输出txt(python)[帮助]
问题描述
我将文件“平均纬度经度-countries.csv”读到南半球。
在文件'result.txt'中打印国家的国家名称
问题:
我希望您修复它,以便可以根据图像文件打印它。
infile = open("average-latitude-longitude-countries.csv","r")
outfile = open("average-latitude-longitude-countries.txt","w")
joined = []
infile.readline()
for line in infile:
splited = line.split(",")
if len(splited) > 4:
if float(splited[3]) < 0:
joined.append(splited[2])
outfile.write(str(joined) + "\n")
else:
if float(splited[2]) < 0:
joined.append(splited[1])
outfile.write(str(joined) + '\n')
解决方案
很难不发布 CSV 的头部/前几行但是,假设您的代码有效并且国家/地区列表已成功填充。然后,您可以替换该行
outfile.write(str(joined) + '\n')
和:
outfile.write("\n".join(joined))
或者
用这两条线:
for country in joined:
outfile.write("%s\n" % country)
请记住,这些方法只是起到了作用。然而,不是最佳的
额外提示:
你可以看看标准 Python 的csv模块。可以让你的解析更容易
此外,splited = line.split(",")
如果有一个包含 "," 的单引号字段,可能会导致错误的输出。像这样: field1_value," field 2,value ",field3, field4 , ...
更新: 现在我知道了,首先,您要将整个聚合数组转储到您读取的每一行的文件中。您应该继续在循环中添加到数组中。然后在整个循环之后,转储一次(像上面一样拆分累积的数组)
这是您的代码稍作修改:
infile = open("average-latitude-longitude-countries.csv","r")
outfile = open("average-latitude-longitude-countries.txt","w")
joined = []
infile.readline()
for line in infile:
splited = line.split(",")
if len(splited) > 4:
if float(splited[3]) < 0:
joined.append(splited[2])
#outfile.write(str(joined) + "\n")
else:
if float(splited[2]) < 0:
joined.append(splited[1])
#outfile.write(str(joined) + '\n')
outfile.write("\n".join(joined))
推荐阅读
- php - SQL Query 计算多个列值的行
- python - 如何根据用户输入的浮点数编写“if”语句?
- c - CS50 Pset5 (Speller) 编译问题
- python - Discord py模块试图让机器人在特定频道的服务器中迎接用户
- javascript - 我应该使用 onClick 或 addEventListener(click) 作为 JavaScript 测验的 if 语句吗?
- javascript - 更改活动链接颜色
- python - 我需要帮助才能知道为什么继承在这个 OOP 示例中不起作用
- javascript - 在 JavaScript 中,分配给变量的对象如何跟踪未来的突变?
- python - 带有过滤器的聚合数据框
- pandas - 如何使用 Matplotlib 在 DataSet 中以字符串为值绘制两列?