在Python中如何拆分字符串以获取一个值?

11

需要帮助,假设我有一个名为“input”的变量,其中包含字符串'Sam-Person'。

name, kind = input.split('-')
通过上述操作,我得到了两个包含不同字符串'Sam'和'Person'的变量。是否有一种方法可以仅获取第一个值'name = Sam',而无需额外的变量'kind'且无需使用列表?在进行此操作时,假设我只会获取'Sam'。
name = input.split('-')

我有一个列表,可以通过索引号 name[0] 或 name[1] 访问其中的值,但这不是我想要的。我只想直接将“Sam”赋值给变量“name”,是否有方法或替代方案来实现这一点而不使用split函数?

2个回答

22

将第一个项目直接分配给变量。

>>> string = 'Sam-Person'
>>> name = string.split('-')[0]
>>> name
'Sam'

您可以指定maxsplit参数,因为您只想获取第一个项目。

>>> name = string.split('-', 1)[0]

还有一个问题,你是在哪里学到的?有没有特定的书籍? - espktro
@espktro,Python教程是一个很好的起点。 - falsetru
我们正在处理单个索引位置(这里是'0')。您可以通过name = string.split('-')print(name[0], name[1])来处理多个位置。 - vrms

4

如果您不需要split函数的第二部分,您可以尝试在字符串中查找第一个-字符的索引,然后切片到该索引:

string[:string.index('-')]

这个方法比分割并丢弃第二部分要快一点,因为它不需要创建一个你不需要的第二个字符串实例。

注意,如果字符串中没有-,此代码将引发异常,就像您原来的代码一样。使用类似 falsetru 的 split 方法的解决方案将返回完整的字符串(这可能更好,也可能不是)。


不错的选择,我也认为它更好,而且这正是我一直在寻找的。我根本不需要字符串的第二部分。 - espktro
这应该是正确的答案,因为不需要扫描整个字符串(想想一个巨大的字符串)。感谢提议。 - Dos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接