在列表中使用re.sub()替换字符后的数字

3
我有一个存储在列表中的数字列表,我想要删除所有位于 . 之后的数字。该列表如下: ['08-52-05.173735', '09-01-22.68835', '09-10-34.145061'] ,我想要删除 . 后面的所有内容。 下面是我正在使用的代码:
ignore_ms = [re.sub(r'(?<=\.).*$', ' ', y) for y in timestamp]
print (ignore_ms)

timestamp 是上述列表中的时间戳。然而,我得到的结果是:

['[', "'", '0', '8', '-', '5', '2', '-', '0', '5', '. ', '1', '7', '3', '7', '3', '5', "'", ',', ' ', "'", '0', '9', '-', '0', '1', '-', '2', '2', '. ', '6', '8', '8', '3', '5', "'", ',', ' ', "'", '0', '9', '-', '1', '0', '-', '3', '4', '. ', '1', '4', '5', '0', '6', '1', "'", ',', ' ',

我想要的结果是 08-52-05,09-01-22,09-10-34。

你知道上面的代码有什么问题吗?

谢谢。


会有更多的点还是只有一个? - Mert Köklü
1
你的代码返回了不同的结果 - https://ideone.com/EnNfmq。看起来 timestamp 在你的代码中是一个字符串。不确定,但你可能想要 像这样的东西 - Wiktor Stribiżew
是的,timestamp是一个字符串。我相信你需要向re.sub传递一个字符串?不知道为什么会返回提到的输出,但是你的第二个链接给了我想要的结果。谢谢。 - user243
2个回答

3
尝试使用str.split
l = ['08-52-05.173735', '09-01-22.68835', '09-10-34.145061']
print([i.split('.')[0]+'.' for i in l])

@Marceline 为什么? - PJProudhon
看看操作者的期望输出。 - Mert Köklü

2
你可以选择更简单的方法,避免使用正则表达式,如下所示:
l = ['08-52-05.173735', '09-01-22.68835', '09-10-34.145061',]

[i[:i.rfind('.')] for i in l]
# ['08-52-05', '09-01-22', '09-10-34']

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