我试图复制Adam Calhoun's experiment将经典小说减少为标点并将其呈现在海报中。Python - 索引错误:字符串索引超出范围
使用his code,我能够进入标点符号阶段,但是当我试图在海报中进行转换时,出现“symb = txt [”中的“IndexError:string index out of range” jj + ii * symbolsPerLine]“一行。
for ii in range(linesOfText):
for jj in range(symbolsPerLine):
symb = txt[jj + ii * symbolsPerLine]
if (symb == "."):
draw.text((trim + jj * deltaW, trim + ii * deltaH - round(font2size/4)), symb, fill=endSentenceFill,
font=font2)
elif (symb == ','):
draw.text((trim + jj * deltaW, trim + ii * deltaH - round(font2size/4)), symb, fill=transitionFill,
font=font2)
elif (symb == '!') or (symb == '?'):
draw.text((trim + jj * deltaW, trim + ii * deltaH), symb, fill=endSentenceFill, font=font2)
elif (symb == '"') or (symb == '\'') or (symb == '(') or (symb == ')') or (symb == '[') or (symb == ']'):
draw.text((trim + jj * deltaW, trim + ii * deltaH), symb, fill=parentheticalFill, font=font2)
elif (symb == ';') or (symb == '-') or (symb == ':'):
draw.text((trim + jj * deltaW, trim + ii * deltaH), symb, fill=transitionFill, font=font2)
else:
draw.text((trim + jj * deltaW, trim + ii * deltaH), symb, fill="green", font=font2)
代码有什么问题?
很难不知道该说些值,例如'symbolsPerLine'或'linesOfText',因为这是一个范围问题。我不熟悉你引用的github源代码中嵌入的代码。不过,这个问题一般听起来很有趣,请详细说明一下! – MathBio
如果不知道'txt'是什么,我们就无法回答。这是一个行列表吗?为什么要乘以符号PerLine? 'txt [ii] [jj]'会更有意义吗? – tdelaney
我编辑了原始代码,直接与小说的标点符号版本一起工作。这里是'txt'代表: 'file = open(“grandeC_pont.txt”,“r”) txt = file.read() file.close()' –