writer.writerow([item['jobName'], item['company']['name'], item['salary'], item['city']['display'], item['workingExp']['name'], item['eduLevel']['name']]) TypeError: string indices must be integers
时间: 2023-10-07 09:06:06 浏览: 154
这个错误通常是因为item的类型不是字典类型,而是字符串类型。这可能是因为response返回的数据格式不同导致的。
你可以在遍历数据之前,先打印一下data的类型和内容,看看是否与预期一致。如果data不是一个字典类型的列表,那么就需要根据实际情况修改代码,正确地获取每个字段的值。
另外,你可以使用try-except语句来捕获这个错误,并在发生错误时打印出相关信息,方便你进行调试:
```python
for item in data:
try:
writer.writerow([item['jobName'], item['company']['name'], item['salary'], item['city']['display'], item['workingExp']['name'], item['eduLevel']['name']])
except TypeError as e:
print('Error:', e)
print('item:', item)
```
这样就可以在发生错误时打印出相关信息,帮助你找到问题的原因。
相关问题
writer.writerow(val1, val2) TypeError: writer.writerow() takes exactly one argument (2 given)
这个错误是因为`writerow()`函数只能接受一个参数,即一个包含多个元素的序列(例如列表或元组)。如果想写入多个值,需要将它们打包成一个序列,然后将序列传递给`writerow()`函数。
以下是示例代码:
```python
import csv
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
row1 = ['val1', 'val2']
row2 = ['val3', 'val4']
writer.writerow(row1)
writer.writerow(row2)
```
这段代码将创建一个名为output.csv的文件,然后向其中写入两行数据。每一行数据由两个值组成,这些值被打包成一个列表,然后传递给`writerow()`函数。注意,在写入CSV文件时,需要指定newline参数,否则每一行数据之间会多出一个空行。
import csv with open('names.csv', 'w', newline='') as csvfile: fieldnames = ['first_name', 'last_name'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'}) writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'}) writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
这段代码是使用Python内置的csv模块创建了一个名为`names.csv`的CSV文件,并向其中写入了三行数据。具体来说,这段代码的作用如下:
1. 使用`open()`函数创建一个名为`names.csv`、以写入模式打开的CSV文件,并将其赋值给变量`csvfile`。
2. 定义一个名为`fieldnames`的列表,其中包含CSV文件中每一列的字段名。
3. 使用`csv.DictWriter`创建一个名为`writer`的字典写入器,它将通过`csvfile`将数据写入CSV文件中。这里的`DictWriter`表示数据以字典的形式写入。
4. 使用`writer.writeheader()`方法写入CSV文件的表头,即每一列的字段名。
5. 使用`writer.writerow()`方法向CSV文件中写入一行数据,其中每个字段的值由一个字典中对应的键值对确定。这里连续写入了三行数据。
需要注意的是,`open()`函数的第二个参数`newline=''`表示在写入CSV文件时不添加额外的空行。这是为了避免在某些平台上出现行结束符的兼容性问题。