拆分字符串时,Split和RSplit返回相同的值

时间:2014-03-17 17:19:29

标签: python

我有几个格式为(10,12),(7,3)等的字符串,我想分成两个格式为string1 = 10,string2 = 12,string1 = 7,string 2 =的字符串3等我使用以下代码执行此操作:

uv = uu[1:-1] #remove brackets from 'uu'
uva = uv.split(",", 1)[1] #take the first string before the ',' split
uvb = uv.rsplit(",", 1)[-1] #take the first string in reverse after the ','

然而在上面的例子中,'uva'和'uvb'都会解析为','和'之后的字符串,不知道为什么。

谁能看到我做错了什么?我已经尝试了变量'uva'的一些变化,但我没有到达任何地方。

由于

3 个答案:

答案 0 :(得分:2)

我想你只想:

uva, uvb = map(int, uv[1:-1].split(","))

例如:

>>> uv = "(10, 12)"
>>> uva, uvb = map(int, uv[1:-1].split(","))
>>> uva
10
>>> uvb
12

由于每个字符串中只有一个逗号","splitrsplit会得到相同的结果:["10", " 12"]。您可以通过索引访问这些值:

 ["10", " 12"]
# ^ 0   ^ 1 (or -1)

(注意从零开始的索引以及使用负数索引从头算回)

或者像我上面所做的那样简单地打开包装。 map使用int将这两个值转换为整数。

答案 1 :(得分:1)

uva = uv.split(",", 1)[1] #take the first string before the ',' split

索引1是第二个字符串,但您实际上并不需要执行此操作。

uva, uvb = uv.split(",")

根据此格式实际代表的内容(来自repr的内容?),您可能会考虑使用ast.literal_eval,这样可以获得整数元组。

答案 2 :(得分:1)

Python使用基于0的索引。你的意思是

uva = uv.split(",", 1)[0]