我想使用.rsplit()操作一个字符串,以便使用逗号分割数据字符串中最后一个逗号之后的任何内容。举个例子:
,000
......应改为:
,0,0,0,
为此,我使用代码:
var = string.rsplit(",",1)[1:]
var = "{}".format(",".join(string(var[0])))
我不是以所需的格式生成数据,而是得到这个:
0,00
如果最后一个逗号后的所有三位数都为零,则似乎只会发生这种情况。其他似乎运作正常的例子是:
,131 to ,1,3,1,
,311 to ,3,1,1,
,330 to 3,3,0,
任何人都可以解释为什么会这样吗?
由于
答案 0 :(得分:1)
1)方括号中的值有什么作用?
请参阅教程中的Lists以获取完整说明,但简要说明一下:
方括号中的一个简单值是索引。如果您有一个列表a = ['a', 'b', 'c', 'd']
,则a[0]
为'a'
,a[1]
为'b'
,依此类推。
由冒号分隔的一对值是切片:它不是列表中的单个值,而是包含所有值的较小列表。因此,a[1:3]
为['b', 'c']
。
您可以不在切片的开头或结尾处,因此a[1:]
为['b', 'c', 'd']
。
您可以对索引和切片使用负数,这意味着从结尾开始计算,因此a[-1]
为'd'
,a[-2]
为'c'
和{{1} }是a[-3:-1]
。
所以,当你这样做时:
['b', 'c']
如果你查找str.rsplit
,你可以看到line.rsplit(",",1)[1:]
返回一个包含2个字符串的列表 - 最后一个逗号的所有内容,以及最后一个逗号之后的所有内容 - 除非没有逗号,在哪种情况下,它返回1个字符串的列表 - 整个line.rsplit(",", 1)
。
line
表示你想要第二个元素的所有内容。所以,如果有一个逗号,你会得到一个包含1个字符串的列表 - 最后一个逗号之后的所有内容;如果没有逗号,你会得到一个空列表。
让我们逐步完成您编辑过的代码。
[1:]
请注意,其中两个步骤绝对没有任何结果,而其中一个步骤引发异常,我不确定它们的目的是什么。最终结果(删除引发异常的部分)并未证明您声称要尝试修复的内容。所以你的问题完全无法解决。
无论如何,如果您不理解代码如何分解为这些步骤,则不应编写密集代码。把事情写成每行一个简单的表达式,确保你完全理解每个人正在做的事情(例如,通过打印结果,就像我一样),并让所有这些表达工作。在那之后,你可以尝试再次使它更简洁。
答案 1 :(得分:0)
我认为你要做的是这样的事情:
input_string = '237363,237,2376,8273,0932'
last_value_on_the_input_string = input_string.split(',')[-1]
last_value_on_the_input_string_chopped = ','.join(last_value_on_the_input_string)
详细的变量名称应该可以帮助您识别每行上发生的事情,
希望它有所帮助!