在以下代码中,我试图获取可以在SpaCy NER模型上进行训练的元素(在第9行代码中)。
from ast import literal_eval
import re
train_data_list = []
for i in range(len(train_data)):
a = re.search(train_data.subtext[i], train_data.text[i])
if a is not None:
element = '("' +train_data.text[i] + '"' + ', {"entities": [(' +
str(a.start()) + ',' + str(a.end()) + ',"SKILL")]})'
train_data_list.append(literal_eval(element))
但是我遇到以下错误
SyntaxError: EOL while scanning string literal
谢谢。
答案 0 :(得分:0)
您不能将长行分成多行,然后按Enter。可以将element=
行更改为这样的单行
element = '("' +train_data.text[i] + '"' + ', {"entities": [(' + str(a.start()) + ',' + str(a.end()) + ',"SKILL")]})'
或在行末添加\
element = '("' +train_data.text[i] + '"' + ', {"entities": [(' + \
str(a.start()) + ',' + str(a.end()) + ',"SKILL")]})'
答案 1 :(得分:0)
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAAFUCAYAAABssFR8AAAK..."
无法解析提供给element
的{{1}} 字符串中的一个(或多个)。即,程序语法是有效的(否则程序将在不运行任何内容的情况下失败!),并且提供给literal_eval
的{{1}} 值中的一个或多个是无效无效Python!
第一步是识别一些“无效”值,例如
literal_eval
如果上述“运行”(fsvo。“运行”),则所提出的假设包含不相关的答案,可以忽略不计;-)
无论如何,解决方案是完全不使用element
。而是直接创建一个对象:
literal_eval
现在,如果from ast import literal_eval
import re
train_data_list = []
for i in range(len(train_data)):
a = re.search(train_data.subtext[i], train_data.text[i])
if a is not None:
element = '("' +train_data.text[i] + '"' + ', {"entities": [(' + str(a.start()) + ',' + str(a.end()) + ',"SKILL")]})'
try:
data = literal_eval(element)
train_data_list.append(data)
except:
print("Failed to parse element as a Python literal!")
print(">>")
print(repr(element))
print("<<")
的 values 包含一个literal_eval
-即原义的两个字符'\'和'n'转义序列-可能会有其他将它们转换为换行符 ..所需的工作,但一次只能执行一次。而且没有退步! :D