gpt4 book ai didi

python eval和字符串索引

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:03 25 4
gpt4 key购买 nike

假设我有一个字符串

string = '1234567890'

我想要由另一个字符串定义的那个字符串的一部分

slice = '5:8'

这很容易做到

>>>string[5:8]
'678'

然而,切片是通过文件传入的,并根据用户输入进行更改。他们是做某事的一种方式吗?

>>>string[eval(slice)]
'678'

当我这样做时,我得到了

    5:8
^
SyntaxError: invalid syntax

我有一个函数可以解释所有四种情况,我只是想知道它们是否是一种更优雅的方法。

感谢您的回答。

最佳答案

您收到语法错误,因为 5:8 本身不是有效的 Python 语句; eval 需要正常的 Python 代码,而不仅仅是片段。

如果你真的想使用eval,你可以说:

string = '1234567890'
sliceInput = '5:8'
result = eval('string[' + sliceInput + ']')

但是,如果您允许用户输入,这根本就不安全。更安全的方法是:

string = '1234567890'
sliceInput = '5:8'
sliceParts = sliceInput.split(':')
if len(sliceParts) != 2:
# Invalid input -- either no ':' or too many
else:
try:
start, end = [ int(x) for x in sliceParts ]
except ValueError:
# Invalid input, not a number
else:
result = string[start : end]

请注意,slice() 是一个内置的 Python 函数,因此将它用作变量名并不是一个好的做法。

关于python eval和字符串索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5359288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com