我试图在不同但预定义的行长度上拆分变长字符串。我把下面的代码扔在一起,当我将它放到Python Tutor(我现在还没有访问适当的python IDE)时,在关键错误6上失败了。我想这意味着我的while循环无法正常工作,它尝试着不断增加lineNum,但我不太确定为什么。有一个更好的方法吗?或者这是容易解决的?将字符串拆分为不同的行长度
代码:
import re
#Dictionary containing the line number as key and the max line length
lineLengths = {
1:9,
2:11,
3:12,
4:14,
5:14
}
inputStr = "THIS IS A LONG DESC 7X7 NEEDS SPLITTING" #Test string, should be split on the spaces and around the "X"
splitted = re.split("(?:\s|((?<=\d)X(?=\d)))",inputStr) #splits inputStr on white space and where X is surrounded by numbers eg. dimensions
lineNum = 1 #initialises the line number at 1
lineStr1 = "" #initialises each line as a string
lineStr2 = ""
lineStr3 = ""
lineStr4 = ""
lineStr5 = ""
#Dictionary creating dynamic line variables
lineNumDict = {
1:lineStr1,
2:lineStr2,
3:lineStr3,
4:lineStr4,
5:lineStr5
}
if len(inputStr) > 40:
print "The short description is longer than 40 characters"
else:
while lineNum <= 5:
for word in splitted:
if word != None:
if len(lineNumDict[lineNum]+word) <= lineLengths[lineNum]:
lineNumDict[lineNum] += word
else:
lineNum += 1
else:
if len(lineNumDict[lineNum])+1 <= lineLengths[lineNum]:
lineNumDict[lineNum] += " "
else:
lineNum += 1
lineOut1 = lineStr1.strip()
lineOut2 = lineStr2.strip()
lineOut3 = lineStr3.strip()
lineOut4 = lineStr4.strip()
lineOut5 = lineStr5.strip()
我已经采取了看看这个答案,但没有C#的任何真正的理解:通过数量Split large text string into variable length strings without breaking words and keeping linebreaks and spaces
给定示例输入的输出应该是什么? –
在这种情况下,我应该得到:“这是一个”“长期降落7”“X7需要”“分裂” – ydaetskcoR
是否分裂'7X7'是一个硬性要求?如果你只是分割单词边界,你可以得到一个更简单的表达式。 –