Python使用re-module和list-rang反转字符串

2024-04-23 18:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的琐碎Python代码:

from re import match
str = "Hello"
print str[::-1]   # elloH
obj = match(r'(\w)(\w)(\w)(\w)(\w)', str)
for i in range(len(str)-1, -1, -1):  # or   reversed(range(len(str)))
    print obj.groups()[i],   # o l l e H

我在这段代码中有两个查询:

  1. 列表str[::-1]中range选项背后的逻辑是什么?因为str[len(str):-1:-1]给出空输出,str[len(str):0:-1]给出输出``olle`等等。你知道吗
  2. 如何使这个正则表达式r'(\w)(\w)(\w)(\w)(\w)'如此紧凑?(即)删除重复的或递归的冗余的(\w),类似于r'(\w)+'?你知道吗

Tags: or代码infromimportreobjhello
3条回答

a)请检查以下代码:

>>> str = "Hello"
>>> str[:]
'Hello'
>>> str[::1]
'Hello'
>>> str[::2]
'Hlo'
>>> str[::3]
'Hl'
>>> str[::-1]
'olleH'
>>> str[::-2]
'olH'
>>> str[-1]
'o'
>>>

由此我们可以推断,[::n]中的最后一个数字(n)表示从开始跳多少步。如果它是正的,它从位置0开始,如果它是负的,它从最后一个位置开始(即-1)。你知道吗

        import re
        str = "Hello"
        print str[::-1]   # elloH
        obj = re.findall(r"(\w)", str)
        for i in range(len(str)-1, -1, -1):  # or   reversed(range(len(str)))
            print obj.groups()[i]

这就是你要找的。你知道吗

word = "Hello"
rword = " ".join(reversed(word))

'o l l e H'

相关问题 更多 >