【问题标题】:How to save all the lines in lists Python如何保存列表Python中的所有行
【发布时间】:2022-11-24 06:14:11
【问题描述】:

我试图从我的输入文件中获取所有行并将它们保存在列表dataset_textsdataset_labels 中。但是我只得到输入文件的最后一行。

变量text_str获取行中的文本序列,变量labels_str保存同一行文本序列对应的向量。变量label保存了1在vector中的位置。最后我想将这些行保存在两个列表dataset_textsdataset_labels 中,但出于某种我无法理解的原因,它只保存了最后一行。

请建议我如何获得包含我的所有行及其在向量中各自位置 1 的列表? 这是我到目前为止的代码,并逐行检查。

from transformers import BertTokenizer
import torch
import re

training_set_path = '../test.txt'

regexp = r'^(.*)\t(\d+)$'

dataset_texts = list()
dataset_labels = list()

input_file = open(training_set_path, 'rb' )
print("Dataset loaded")

num_labels = 0 
print("Num_labels")
print(num_labels)
#labels_str = []   # added by me 
for line in input_file:
    line = line.decode( errors = 'replace' )
    #print(line)
    if re.match(regexp, line):
      text_str = re.findall( regexp, line )[0][0]  # getting the aa sequence
      print("here text_str")
      print(text_str)
      labels_str = re.findall( regexp, line )[0][1] # getting the corresponding vector
      print("here labels_str")
      print(labels_str)
      label = labels_str.index('1')
      print("here label")
      print(label)
      dataset_texts.append( text_str )
      dataset_labels.append( label )
      num_labels = len(labels_str)
      print("Here length num_labels")
      print(num_labels)
      counter += 1

    # else:
    #   break
input_file.close()
print("______________________________________________________________________")
print("Here dataset_text")
print(dataset_texts)
print("Here dataset_labels")
print(dataset_labels)
output_file = open( logs_path, 'w')
num_labels = len(labels_str)

我的输出如下:

Dataset loaded
Num_labels
0
here text_str
Q Q L R K P A E E L G R E I T H Q L F L L G C G A Q M L K Y A S P P M A Q A W C Q V M L D T R G G V R L S E Q I Q N D L L
here labels_str
1000000000000000000000000000000000000000000000000000000000000
here label
0
Here length num_labels
61
______________________________________________________________________
Here dataset_text
['Q Q L R K P A E E L G R E I T H Q L F L L G C G A Q M L K Y A S P P M A Q A W C Q V M L D T R G G V R L S E Q I Q N D L L']
Here dataset_labels
[0]

【问题讨论】:

  • 你能提供一些输入文本文件的样本吗?

标签: python string list line


【解决方案1】:

我相信问题出在您的正则表达式上。 将 regexp = r'^(.*) (d+)$' 更改为 regexp = r'^(.*) (d+)( | | )$',使其变为 matches new line characters at the end of each line

修复正则表达式后,我遇到了这个label = labels_str.index('1') 的错误。所以,你可能想删除它。在尝试添加之前,您还需要在循环外定义 counter。如果没有匹配项,代码也会出错,因为您在末尾打印出仅在匹配项时才定义的变量。所以我可能还会将循环外的所有这些变量定义为空字符串。

希望我猜对了输入文件的格式。一些文本后跟一个制表符,然后是一些数字。

示例输出


Here dataset_text
['abasd	TEST', 'FASDASD	345678 TEST', 'FASDASD	345678 TEST', 'FASDASD	345678 TEST', 'FASDASD	345678 TEST']
Here dataset_labels
['1234', '4321', '8964', '1234', '1234']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2018-10-18
    • 2021-02-04
    相关资源
    最近更新 更多