在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, '.') + '.'