【问题标题】:Why am I getting TypeError: string indices must be integers?为什么我收到 TypeError:字符串索引必须是整数?
【发布时间】:2019-11-26 16:19:18
【问题描述】:

我对编码非常陌生,我正在尝试编写一段代码来在 csv 文件中的列中搜索关键字。我不明白为什么我在尝试测试我拥有的代码时收到“TypeError:字符串索引必须是整数”。

我真的不知道该尝试什么。我尝试更改变量的名称,但这似乎没有帮助。

标准库

导入操作系统 将熊猫导入为 pd 导入参数解析 将 numpy 导入为 np

定义参数

parser = argparse.ArgumentParser(description="Takes a CSV file and searches a specified column a keyword")
parser.add_argument("--csv", dest="csv", action='store', required=True,help="Name of the CSV file [required]")
parser.add_argument("--kw", dest="keyword", action='store', required=True,help="Keyword being searched for")
parser.add_argument("--cl", dest="column_name", action='store', required=True, help= "Name of column that is being searched")
parser.add_argument("--ocl", dest='output_column_name', action='store', required=True, help="Name of column in ouput file")
parser.add_argument("--outdir", dest="odir" , action='store', required=True, help="Out directory path")
args=parser.parse_args()

在继续之前标准化了一些路径

file= args.csv
key = args.keyword
outColName= args.output_column_name
outdir= args.odir

print(key)

def gene_database_search(key, file):
    colName = 'flag_' + key
    file[colName] = np.where(file[args.column_name].str.contains(key), 1, 0)
    return file[[outColName,colName]]

keywordList = [key]

for key in keywordList:
    print(key)
    de = gene_database_search(key,file)
    de.to_csv(outdir/'flag_'+ key + '_list.csv')

我应该得到一个 csv 文件作为输出,但我在第 35 行和第 42 行得到了 TypeError。

【问题讨论】:

  • 你能发布回溯吗?我们看不到行号:P
  • 在Python中你必须注意什么各种对象。您应该选择给您一些指示该项目的名称。例如filename=args.csv,是一个字符串,一个文件名,而不是一个文件。要查找列,您必须首先 open 和 load 文件。我怀疑您需要使用 pandas 加载 csv。如果是这样,您需要导入它并使用正确的加载器。

标签: python string typeerror argparse


【解决方案1】:

args.csv 是一个字符串,这意味着file 也是,但你正在这样做:

file[colName] = np.where(file[args.column_name].str.contains(key), 1, 0)

你想在这里做什么?

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 2016-07-19
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2021-04-28
    相关资源
    最近更新 更多