lol*_*ger 14 python regex string
如何从列表中的元素中删除字符?
例:
mylist = ['12:01', '12:02']
Run Code Online (Sandbox Code Playgroud)
我想从文件中的时间戳中删除冒号,这样我就可以更容易地将它们转换为24小时.现在我试图遍历列表中的元素并搜索包含冒号并进行替换的元素.
for num in mylist:
re.sub(':', '', num)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
救命!
Ale*_*lli 19
列表理解解决方案是最Pythonic解决方案,但是,有一个重要的转折点:
mylist[:] = [s.replace(':', '') for s in mylist]
Run Code Online (Sandbox Code Playgroud)
如果你mylist像其他答案那样分配,那个名字,而不是mylist[:]像我建议的那样分配给"整个列表片段",你真的在做一些与"替换列表中的条目"截然不同的东西:你是创建一个新列表,然后重新绑定您之前用来引用旧列表的裸名称.
如果旧的列表由多个名称(包括容器中的条目)引用,则此重新绑定不会影响其中任何一个:例如,如果您有一个mylist作为参数的函数,则barename赋值仅在本地有效到函数,并不会改变调用者看到的列表内容.
分配到整个列表切片,mylist[:] = ...,改变了列表对象,而不是切换barenames'绑定碴左右-现在该名单是真正的改变,并且它无论怎么提到,新的值是多少见过.例如,如果您有一个mylist以参数为参数的函数,则整个列表切片分配会改变调用者看到的列表内容.
关键是要确切知道你所追求的效果 - 最常见的是你想要改变列表对象,所以,如果必须猜测,整个列表切片分配通常是最好的猜测;-).在性能方面,它没有任何区别(除了裸名称赋值,如果它保持旧的和新的列表对象,将占用更多的内存,无论两个对象仍然存在的时间流逝,当然).
Pär*_*der 17
使用列表推导生成新列表:
>>> mylist = ['12:01', '12:02']
>>> mylist = [s.replace(':', '') for s in mylist]
>>> print mylist
['1201', '1202']
Run Code Online (Sandbox Code Playgroud)
您的解决方案不起作用的原因是re.sub返回一个新字符串 - 字符串在Python中是不可变的,因此re.sub无法修改现有字符串.
| 归档时间: |
|
| 查看次数: |
15860 次 |
| 最近记录: |