result = [] for row in data_1: for compare_row in data_class: if row['appid'] == compare_row['appid']: result.append(row) break TypeError: string indices must be integers
时间: 2024-04-16 07:28:04 浏览: 120
这个错误通常表示你正在尝试在字符串上使用索引,但字符串只能使用整数索引而不是字符串索引。
根据你提供的代码,错误可能出现在以下两行:
```python
if row['appid'] == compare_row['appid']:
```
以及之前的数据读取部分:
```python
data_1 = []
with open('app_class.csv', 'r') as file1:
reader = csv.DictReader(file1)
for row in reader:
data_1.append(row)
data_class = []
with open('app.csv', 'r') as file2:
reader = csv.DictReader(file2)
for row in reader:
data_class.append(row)
```
问题可能是因为你的 CSV 文件中的某些列名并不是 `'appid'`。请确保你使用的列名与实际的列名完全匹配。
你可以通过打印出每一行的内容来检查列名:
```python
for row in data_1:
print(row)
```
确认 `row` 中的键和对应的值,以确保你使用正确的列名进行比较。
如果问题仍然存在,请提供示例数据以及 CSV 文件的列名和内容,以便更好地帮助你解决问题。
相关问题
# 读取第一个 CSV 文件 data1 = [] with open('day01改.csv', 'r', encoding='gbk') as file1: reader = csv.DictReader(file1) for row in reader: data1.append(row) # 读取第二个 CSV 文件 data2 = [] with open('app_class.csv', 'r', encoding='gbk') as file2: reader = csv.DictReader(file2) for row in reader: data2.append(row) # 比较两个数据集并保留相同的内容 result = [] for row in data1: for compare_row in data2: if row['appid'] == compare_row['appid']: row['appid']=compare_row['type'] break
根据你提供的代码,以及你的要求将第一个 CSV 文件中的 "appid" 列替换为第二个 CSV 文件中相应行的 "type" 列内容,下面是完整的代码:
```python
import csv
# 读取第一个 CSV 文件
data1 = []
with open('day01改.csv', 'r', encoding='gbk') as file1:
reader = csv.DictReader(file1)
for row in reader:
data1.append(row)
# 读取第二个 CSV 文件
data2 = []
with open('app_class.csv', 'r', encoding='gbk') as file2:
reader = csv.DictReader(file2)
for row in reader:
data2.append(row)
# 比较两个数据集并保留相同的内容
result = []
for row in data1:
for compare_row in data2:
if row['appid'] == compare_row['appid']:
row['appid'] = compare_row['type']
break
result.append(row)
# 将结果写入新的 CSV 文件
fieldnames = data1[0].keys()
with open('result.csv', 'w', newline='', encoding='gbk') as result_file:
writer = csv.DictWriter(result_file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(result)
```
请确保将 `'day01改.csv'` 和 `'app_class.csv'` 替换为实际的文件路径。代码将创建一个名为 `'result.csv'` 的新文件,其中包含第一个 CSV 文件中 "appid" 列替换为第二个 CSV 文件中相应行的 "type" 列内容的结果。
阅读全文