python - 为什么 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”结尾的行
解决方案
拆分后,您需要剥离字符串以删除 IO 放入其中的垃圾,例如换行符、其他选项卡等。为此,Python 有一个.strip()
功能。
您还在 and 之间进行比较String
,Integer
因此为了使其不会因类型错误而失败,您必须更改代码以比较字符串或将结果从 file 转换为Integer
with int()
。
条件可以改写为:
if int(line.split('\t')[1].strip()) == 0:
或作为:
if line.split('\t')[1].strip() == "0":
推荐阅读
- java - Spring Boot:YAML 配置未加载到 bean
- html - 如何在 SVG 周围画一个圆圈并填充
- python - 在Python中转换列表中的两个熊猫列
- sql-server - 从多个数据库中获取数据 - 动态数据库
- python - 基于其他数据帧索引在特定级别重新索引多索引数据帧
- bash - 如何在 Expect 脚本中使用 while 循环来显示某个提示?
- android - 从 jsoup android 获取音频 URL
- python - 我的 Amazon EMR 集群无法启动。如何解决 Python 依赖项?
- java - 我的java编码的两部分没有连接
- html - 切换器不展开