我正在编写一个非常简单的函数,给定一个字符串作为输入,将字符串解析为句子,反转每个句子的单词,然后以给定的句子顺序返回反向句子。我正在努力使用string.split()
和string.join()
内置方法,并在运行以下python程序时遇到TypeError。
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。感谢您忍受我的愚蠢。
答案 0 :(得分:2)
item.split(' ').reverse()
不返回列表,而是反向执行。因此,您的加入与:
string.join(None, ' ')
显然是个问题。您应该使用reversed()
函数:
string.join(reversed(item.split(' ')), ' ')
而不是string.join
函数,请使用较新Python版本中string
类中定义的方法。
' '.join(reversed(item.split(' '))
答案 1 :(得分:1)
尝试
>> str = 'a1 b2'
>> ' '.join(x[::-1] for x in str.split())
'1a 2b'
以函数形式:
def reverseSentences(str):
return ' '.join(x[::-1] for x in str.split())
请注意,x[::-1]
比reversed()
(Reverse a string in Python)快。
答案 2 :(得分:0)
排队:
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, '.') + '.'