首页 > 解决方案 > 在 CSV 文件中查找子字符串的索引

问题描述

我编写了一些代码来创建一个函数,用于计算子字符串在字符串中出现的次数,该函数的第二部分应该返回,是每个子字符串的索引。

该字符串存储在 .csv 文件中,当我尝试返回子字符串的索引时遇到问题。

1.导入text.csv文件

import csv
data = open('text.csv', 'r')
read_data = csv.reader(data)

2.功能齐全的计数器。该函数应返回子字符串出现的次数及其索引

def counter(substring):
  ss_counter = 0
  for substring in read_data:
    ss_counter = ss_counter + 1
    print('Counter = ', ss_counter)
    print('Index = ', substring.index)

3.不要编辑下面的代码

counter("TCA")

我从 .index 得到的错误是

列表对象的内置方法索引在 0x7f4519700208

标签: python

解决方案


假设您在我的评论中提到时修复,它不会像您期望的那样工作。

read_data变量是一个将遍历文件行的对象(请参阅此处的文档)。所以在函数内部,当你这样做时for substring in read_data,子字符串变量(你覆盖参数)包含一个单独的行,其中每个元素都是逗号分隔的值。

检查该方法的文档。您必须将要在列表中查找的子字符串传递给函数。但是因为您覆盖了您正在寻找的子字符串,所以现在这是不可能的。listindexindex()

附带说明一下,子字符串可能会出现两次或更多次,而您当前的代码没有考虑到这一点。

所以一种解决方案可能是:

def counter(substring):
    ss_counter = 0
    for row in read_data:
        ss_counter = ss_counter + 1
        print('Counter = ', ss_counter)
        print('Index = ', row.index(substring))

我将让您弄清楚如何考虑给定行中的多次出现。


推荐阅读