Python 使用split函数编程有什么问题?

Python 使用split函数编程有什么问题?,python,split,Python,Split,我想将一行中的字符数限制为77个。结合这一限制,如果最后一个单词的长度将超过77个字符,我想把它放在当前行下面的新行上 我创建了下面的代码,但它将“people”放在了错误的代码行中 txt = '''hello there my dear friends and enemies and other people my name is simon and I like to do drawings for all you happy people''' txtSplit = [] txtSpl

我想将一行中的字符数限制为77个。结合这一限制,如果最后一个单词的长度将超过77个字符,我想把它放在当前行下面的新行上

我创建了下面的代码,但它将“people”放在了错误的代码行中

txt = '''hello there my dear friends and enemies and other people my name is simon and I like to do drawings for all you happy people'''

txtSplit = []
txtSplit = txt.split(' ')

rowsDict = {}
countOfCharactersPerLine = 0
row = 0
for i in range(len(txtSplit)):
    countOfCharactersPerLine += len(txtSplit[i])

    if countOfCharactersPerLine >= CHARACTERS_PER_LINE:
        countOfCharactersPerLine = len(txtSplit[i])
        row += 1
        rowsDict[txtSplit[i]] = row

    else:
        rowsDict[txtSplit[i]] = row 

for key,value in rowsDict.items():
    print(key,value)
代码的输出为:

hello 0
there 0
my 0
dear 0
friends 0
and 0
enemies 0
other 0
people 1
name 0
is 0
simon 0
I 0
like 0
to 0
do 0
drawings 1
for 1
all 1
you 1
happy 1

为什么将单词“people”放在第1行而不是第0行?

单词
people
在该文本中出现两次,而字典只能包含一次给定的键。第二次出现的
取代了第一次出现的人。

约翰·戈登给了你为什么它不起作用的原因。以下内容可能有助于解决您的问题:

word_list = []
countOfCharactersPerLine = 0
row = 0

for s in txtSplit:
    countOfCharactersPerLine += len(s)

    if countOfCharactersPerLine >= CHARACTERS_PER_LINE:
        countOfCharactersPerLine = len(s)
        row += 1
    word_list.append((s, row))

print(word_list)

你的句子中出现了两次人物,这就是为什么你看到的第二个“人物”的行数为1。 这是因为python字典不存储重复的键。 这可能会让你更清楚。
如果需要,可以使用列表执行以下操作:

txt = "hello there my dear friends and enemies and other people my name is simon and I like to do drawings for all you happy people"

txtSplit = []
txtSplit = txt.split(' ')
rowsList = []
countOfCharactersPerLine = 0
row = 0
CHARACTERS_PER_LINE = 77
for i in range(len(txtSplit)):
    countOfCharactersPerLine += len(txtSplit[i])
    #print(i,txtSplit[i],len(txtSplit[i]),countOfCharactersPerLine)
    if countOfCharactersPerLine >= CHARACTERS_PER_LINE:
        countOfCharactersPerLine = len(txtSplit[i])
        row += 1
    rowsList.append(txtSplit[i])
    rowsList.append(row)
for i in range(0,len(rowsList),2):
    print(rowsList[i],rowsList[i+1])

谢谢我可以使用不同的数据结构来解决这个问题,还是采用完全不同的方法来解决这个问题?