我試圖在不同但預定義的行長度上拆分變長字符串。我把下面的代碼扔在一起,當我將它放到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'是一個硬性要求?如果你只是分割單詞邊界,你可以得到一個更簡單的表達式。 –