在Python中使用string.join()时出现TypeError
我正在编写一个非常简单的函数,给定一个字符串作为输入,将该字符串解析为句子,反转每个句子的单词,并按给定的句子顺序返回反转的句子。我正在努力使用在Python中使用string.join()时出现TypeError,python,string,Python,String,我正在编写一个非常简单的函数,给定一个字符串作为输入,将该字符串解析为句子,反转每个句子的单词,并按给定的句子顺序返回反转的句子。我正在努力使用string.split()和string.join()内置方法,运行下面的python程序时遇到了一个类型错误 import string def reverseSentences(str): senList = str.split('.') for i, item in enumerate(senList[:]):
string.split()
和string.join()
内置方法,运行下面的python程序时遇到了一个类型错误
import string
def reverseSentences(str):
senList = str.split('.')
for i, item in enumerate(senList[:]):
senList[i] = string.join(item.split(' ').reverse(), ' ')
return string.join(senList, '.') + '.'
当我试图打印对这个函数的调用时,它会给我一个通用的TypeError。感谢您忍受我的n00bishness。项。拆分(“”)。反转()不返回列表,而是在适当的位置反转。因此,您的加入与以下内容相同:
string.join(None, ' ')
显然是个问题。您应该使用reversed()
函数:
string.join(reversed(item.split(' ')), ' ')
而不是string.join
函数,而是在较新的Python版本中使用string
类中定义的方法
' '.join(reversed(item.split(' '))
试一试
函数形式:
def reverseSentences(str):
return ' '.join(x[::-1] for x in str.split())
请注意,x[::-1]
比reversed()
()快得多 直线:
senList[i] = string.join(item.split(' ').reverse(), ' ')
.reverse()反转列表对象本身中的项,但不返回任何内容,因此不能以这种方式使用联接
将该行一分为二:
import string
def reverseSentences(text):
senList = text.split('.')
for i, item in enumerate(senList[:]):
splited = item.split(' ')
splited.reverse()
senList[i] = string.join(splited, ' ')
return string.join(senList, '.') + '.'
string.join
是旧的cruft(并在较新的Python版本中删除)-使用'.join(反转(…)
我想,OP只需要-'.join(str.split()[::-1])
。你在颠倒每一个词,你是对的!这种描述让我感到困惑,因为它“颠倒了每一句话的意思”。OP没有给出输入/输出示例。不管怎样,快速编写代码很有趣:)
import string
def reverseSentences(text):
senList = text.split('.')
for i, item in enumerate(senList[:]):
splited = item.split(' ')
splited.reverse()
senList[i] = string.join(splited, ' ')
return string.join(senList, '.') + '.'