<p>我认为最简单的方法是将你在组合字符串上执行的任何操作转换回片段,但我想你已经想到了这一点。
相反,不能插入任何换行符,而是生成一个位置列表,在该列表中输入这些换行符。跟踪字符串位的长度,假设变量<code>posis</code>中存储了将“”替换为“\n”的位置,则可能如下所示:</p>
<pre><code> import numpy as np
posis = [27,98187,227] # position of the newlines in your sample, length of full string as last entry
lengths = [len(string) for _, string in first_input]
covered_distance = 0 # lengths of all strings we looked at already
j = 0 # iterating index for positions
output = []
rel_pos = posis[0]-covered_distance # initialize relative position in the current string
inserted_newlines = 0 # keep track of newlines we added already
for i, [n, string] in enumerate(first_input):
while rel_pos < lengths[i]:
string = string[:rel_pos+inserted_newlines]+'\n'\
+string[rel_pos+inserted_newlines+1:] # replace the character at the relative position
j += 1 # advance to the next newline to be inserted
rel_pos = posis[j]-covered_distance # update the relative position
inserted_newlines += 1 # keep track of inserted newlines
output.append((n, string)) # store resulting string
covered_distance += lengths[i] # update the number of characters we passed
rel_pos = posis[j]-covered_distance
</code></pre>
<p>这不是很漂亮,但它适用于样本,为了进行适当的测试,我需要一些关于可能情况的更多信息,可能还有确定换行位置的操作</p>