首页 > 解决方案 > [帮助]从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')

标签: pythoncsvtxt

解决方案


很难不发布 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))

推荐阅读