我有这篇主文How can I run java script from a local folder?
这个diff.diff_main(diff(), "How can I run java script from a local folder?","How can I run Javascript from a local folder?")
返回[(0, 'How can I run '), (-1, 'j'), (1, 'J'), (0, 'ava'), (-1, ' '), (0, 'script from a local folder?')]
这个短字符串的问题不是很大,但在我的应用程序中,像40000个字符这样的大字符串是很常见的。为了清晰易读,我选择了这个短字符串,,,但是我正在寻找一种方法来存储文本位置(从开始位置到结束位置),而不是实际的文本。它将最终与原文匹配。你知道吗
例如,,,而不是[(0, 'How can I run '), (-1, 'j'), (1, 'J'), (0, 'ava'), (-1, ' '), (0, 'script from a local folder?')]
我将有[(0, '0,14'), (-1, 'j'), (1, 'J'), (0, '15,18'), (-1, ' '), (0, '19,44')]
它将从元组中编码的位置解码,例如0,14是从位置0到14或How can I run
,,,15,18是从原始文本中的位置15到18或ava
等
它可以这样检索originaltext[0:14]
以后
我试过了,它离我们很近
a=[(0, 'How can I run '), (-1, 'j'), (1, 'J'), (0, 'ava'), (-1, ' '), (0, 'script from a local folder?')]
b='How can I run java script from a local folder?'
result={}
positioncount = 0
for x, y in enumerate(a):
if y[0] == 0:
if positioncount == 0:
result[x]={y[0]:len(y[1])}
positioncount+=len(y[1])
else:
result[x]={y[0]:(len(y[1])+positioncount,len(y[1]))}
else:
result[x]={y[0]:y[1]}
positioncount-=len(y[1])
但是print result
是给我的{0: {0: 14}, 1: {-1: 'j'}, 2: {1: 'J'}, 3: {0: (15, 3)}, 4: {-1: ' '}, 5: {0: (38, 27)}}
,这是不正确的,因为它应该给我{0: {0: 14}, 1: {-1: 'j'}, 2: {1: 'J'}, 3: {0: (15, 18)}, 4: {-1: ' '}, 5: {0: (19, 44)}}
我做错什么了?有什么办法做得对吗?如果你有别的选择,我很乐意接受,谢谢!你知道吗
为什么要创建以运行索引作为键的词典? 试试这个:
相关问题 更多 >
编程相关推荐