首页 > 解决方案 > 为什么 line.split('\t')[1] 不等于 0?

问题描述

我有许多包含两列的 tsv 文件。第一列由句子组成,第二列由这些句子的极性组成。分隔符是一个表格。我想提取极性为“0”的线。

我编写了这个小代码,但无论如何它都不起作用并返回 0 个句子。

    for d in directory:
        print(" directory: ", d)
        splits = ['dev1'] #,'test1','train1']

        for s in splits:

            print(" sous-dir : ", s)
            path = os.path.join(indir, d)
            with open(os.path.join(path, s+'.tsv'), 'r', encoding='utf-8') as f_in:
              next(f_in)
              for line in f_in:
                if line.split('\t')[1] == 0:
                  doc = nlp(line.split('\t')[0])

                  line_split = [sent.text for sent in doc.sents]

                  for elt in line_split:
                    sentences_list.append(elt)


    print("nombres total de phrases :", len(sentences_list))


为什么 line.split('\t')[1] 不等于 0 如果 line 是字符串 "Je suis levant\t0\n"

前任。一个文件的

gnfjfklfklf  0
fokgmlmlrfm  1
eoklplrmrml  0
ekemlremeùe  0

我想保留以“0”结尾的行

标签: pythonpython-3.xlist

解决方案


拆分后,您需要剥离字符串以删除 IO 放入其中的垃圾,例如换行符、其他选项卡等。为此,Python 有一个.strip()功能。

您还在 and 之间进行比较StringInteger因此为了使其不会因类型错误而失败,您必须更改代码以比较字符串或将结果从 file 转换为Integerwith int()

条件可以改写为:

if int(line.split('\t')[1].strip()) == 0:

或作为:

if line.split('\t')[1].strip() == "0":


推荐阅读