SyntaxError:在Python中扫描字符串文字时停产

时间:2018-11-01 06:04:43

标签: python-3.x

在以下代码中,我试图获取可以在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

谢谢。

2 个答案:

答案 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