编写一个简单的程序,从键盘读取一行,并输出相同的行,每个单词都反转.单词被定义为字母数字字符或连字符(' - ')的连续序列.例如,如果输入是"你能帮助我吗!"输出应该是"naC uoy pleh em!"
我只是尝试使用以下代码,但它有一些问题,
print"Enter the string:"
str1=raw_input()
print (' '.join((str1[::-1]).split(' ')[::-2]))
Run Code Online (Sandbox Code Playgroud)
它打印出"naC uoy pleh!em",只看感叹号(!),这就是问题所在.有谁可以帮我???
最简单的可能就是使用re模块来拆分字符串:
import re
pattern = re.compile('(\W)')
string = raw_input('Enter the string: ')
print ''.join(x[::-1] for x in pattern.split(string))
Run Code Online (Sandbox Code Playgroud)
运行时,您会得到:
Enter the string: Can you help me!
naC uoy pleh em!
Run Code Online (Sandbox Code Playgroud)
您可以使用re.sub()查找每个单词并将其反转:
In [8]: import re
In [9]: s = "Can you help me!"
In [10]: re.sub(r'[-\w]+', lambda w:w.group()[::-1], s)
Out[10]: 'naC uoy pleh em!'
Run Code Online (Sandbox Code Playgroud)