Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果行[索引]=“将行写入新csv”;“字符串”;python_Python_Python 3.x - Fatal编程技术网

如果行[索引]=“将行写入新csv”;“字符串”;python

如果行[索引]=“将行写入新csv”;“字符串”;python,python,python-3.x,Python,Python 3.x,您好,我正在尝试将索引为7=“Danmark”的所有行传递到另一个文件。 从CSV文件中,我得到错误“IndexError:列表索引超出范围”。 希望你们能帮我 import csv #import the module csv with open('akassedatareduced.csv', encoding="ISO-8859-1") as csvfile, open('nydata.csv', 'w') as output: rowreader = csv.reader(csv

您好,我正在尝试将索引为7=“Danmark”的所有行传递到另一个文件。 从CSV文件中,我得到错误“IndexError:列表索引超出范围”。 希望你们能帮我

import csv #import the module csv
with open('akassedatareduced.csv', encoding="ISO-8859-1") as csvfile, open('nydata.csv', 'w') as output:
    rowreader = csv.reader(csvfile) 
    fieldnames = ['CHURN/LOYAL', 'Medlemstype', 'Alder', 'Kon', 'Kommune', 'Uddannelsesnavn', 'Uddannelsessted', 'Land', 'Ledighed Historik', 'Telefon', 'Mobil', 'SamtaleType', 'Samtalested', 'Samtale maned', 'Churn maned', 'Dagpengeret maned', 'indmeldeses maned', 'fodselsdags maned']
    writer = csv.DictWriter(output,delimiter= ',',fieldnames=fieldnames)

#writer= csv.DictWriter.writeheader(fieldnames)
for row in rowreader:
    print(row[7])
    if row[7] == "Danmark":
        writer.writerow(row)

看起来您的行格式不正确。要自行调试,请使用
try
/
except
子句捕获
索引器

for row in rowreader:
    try:
        if row[7] == "Danmark":
            writer.writerow(row)
    except IndexError:
        print(row)

然后,让错误以静默方式传递,或者修复基础数据并重新运行。

我更喜欢使用
csv.DictReader
。DictReader将每一行转换为字典。这非常有帮助,因为即使更改了列顺序,或者在其间插入/删除了任何列,脚本仍然可以工作

当您使用DictReader时,您的代码将如下所示

import csv #import the module csv
with open('akassedatareduced.csv', encoding="ISO-8859-1") as csvfile, open('nydata.csv', 'w') as output:
    rowreader = csv.DictReader(csvfile) 
    fieldnames = ['CHURN/LOYAL', 'Medlemstype', 'Alder', 'Kon', 'Kommune', 'Uddannelsesnavn', 'Uddannelsessted', 'Land', 'Ledighed Historik', 'Telefon', 'Mobil', 'SamtaleType', 'Samtalested', 'Samtale maned', 'Churn maned', 'Dagpengeret maned', 'indmeldeses maned', 'fodselsdags maned']
    writer = csv.DictWriter(output,delimiter= ',',fieldnames=fieldnames)

#writer= csv.DictWriter.writeheader(fieldnames)
for row in rowreader:
    print(row["Land"]) # Access using column name
    if row["Land"] == "Danmark":  # Access using column name
        writer.writerow(row)

可以打印行阅读器吗?这是因为某些行没有第8列(请记住,数组编号从0开始)。请确认是否所有行都有第8列。更好的方法是使用DictReader(),然后访问列,如
行['ColumnName']=='Danmark'
。多谢您的帮助,我没有收到任何错误,它通过行查看正确的列。但是,打印输出显示为“无”,并使用“丹麦”在所有行中循环。对于行中的行,Reader:try:print(row[“Land”])#如果row[“Land”]=“Danmark”:writer.writerow(row)而不是indexer:print(row),则使用列名访问`尝试打印
打印行
并发布输出。这是打印时的输出,打印(行)值没有顺序([(“搅动/忠诚”,“搅动,贝塔兰德,63,M,Gladsaxe Kommune,cand.polyt,Ikke pa liste,Danmark,Ingen Ledigheshistorik Udfyldt,,,,,,,,,,,,“1989年12月”,“1950年9月”,“1977年3月”,“1926年1月”,('Medlemstype',无),('Alder',无),('Kon',无),('Kommune',无),('Uddannelessnavn',无),('Uddannelessted',无),('Land',无),('Telefon udfyldt status',无),('Mobil udfyldt status',无),('Samtaletype',无),('Samtalested',无),('Samtalested',无),('Samtalmaned',无),('Samtaletile无)