用Python处理文档

用Python处理文档,python,Python,虚构模块的文档: 返回从开始到结束范围内反转的文本副本 如果指定了可选参数start和end,此函数将反转切片文本[start:end],但保留切片外部的文本不变。例如: >>> weird.reverse('abCDEfg',2,5) 'abEDCfg' >>> weird.reverse('abCDEfg',2) 'abgfEDC' 如果未指定“开始”或“结束”,则反向切片将分别从字符串的开头开始,或在字符串的结尾结束。例如: >>>

虚构模块的文档:

返回从开始到结束范围内反转的文本副本

如果指定了可选参数start和end,此函数将反转切片
文本[start:end]
,但保留切片外部的文本不变。例如:

>>> weird.reverse('abCDEfg',2,5)
'abEDCfg'
>>> weird.reverse('abCDEfg',2)
'abgfEDC'
如果未指定“开始”或“结束”,则反向切片将分别从字符串的开头开始,或在字符串的结尾结束。例如:

>>> weird.reverse('abCDEfg',2,5)
'abEDCfg'
>>> weird.reverse('abCDEfg',2)
'abgfEDC'
参数:
文本(str)–要(部分)反转的文本 开始(int)–要反转的切片的开始 结束(int)–要反转的切片的结束 返回:
从开始到结束反转的文本副本

返回类型:
str

问题: 这些表达式返回什么

weird.reverse('abcef',-3)
weird.reverse('abcef',end=2)    

我一次又一次地磕头。

下面是一个可能的实现:

def reverse(text, start=None, end=None):
    if start is None and end is None:
        return text[::-1]
    if end is None:
        return text[:start] + text[start:][::-1]
    if start is None:
        return text[:end][::-1] + text[end:]
    return text[:start] + text[start:end][::-1] + text[end:]
使用此代码,运行

print(reverse('abcef',-3))
print(reverse('abcef',end=2))
给出:

abfec
bacef

链接到切片文档:

这两个示例中,您不清楚哪一个,为什么不清楚?我都不清楚。奇怪。文档中的反向('abCDEfg',2)返回'abgfEDC'。根据这个原理,我会认为最上面的表达式中的怪异的.reverse('abcef',-3)意味着我不使用最后3个字符,而将前2个字符反转,但是,这是不正确的。我已经尝试了我能想到的每一个组合。你明白虚构文档中显示的两个例子吗?我猜是“从开始到结束的范围”让你感到困惑。如果您已经知道字符串切片是如何工作的,那么这个问题就更容易回答(因为您正在反转的是一个切片)。也许你可以暂时停止这个问题,复习一下
s[i:j]
的意思。非常感谢你的帮助。你的解释帮助我弄清了答案的原因。非常感谢。这也帮助我自己想出了第二个表达式的答案。end=2(表示仅从左侧开始反转前2个位置)