如果字符串包含日期和时间,如何从中删除它?

2024-06-24 11:57:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串列表。其中一些在末尾包含日期和时间戳,但大多数没有。日期/时间格式将始终是相同的格式

sampleString = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']

我在找这样的陈述:

if 'MM.DD.YYYY' in sampleString:
    samplestring = samplestring.split('MM.DD.YYYY')[0]

print(sampleString)
>>>['String 1', 'String2', 'String 3']

但这显然行不通。感谢您的帮助


Tags: 字符串in列表stringif格式时间dd
3条回答
import re

def filter_date(date):
    match = re.search(r'\d{2}.\d{2}.\d{4} \d{2}:\d{2}:\d{2}', date)
    return date.replace(match.group(), '').strip() if match else date

xs = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']
out = list(map(filter_date, xs))

print(out)

输出:

['String 1', 'String2', 'String 3']

看起来可以从re模块使用search函数

import re
data = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']
pattern = re.compile(r"\b\d{2}\.\d{2}\.\d{4}\b")
print([pattern.split(i)[0].strip() if pattern.search(i) else i for i in data])

输出:

['String 1', 'String2', 'String 3']
import re

input = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']

# compile our regex
r = re.compile(r'(.+) \d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}$')

# take first part
output = [r.sub(r'\1', s) for s in ls]

print(ls)
# ['String 1', 'String2', 'String 3']

正则表达式说明:

  • \d:匹配任意数字
  • \.:文字点
  • {n}:重复上一个标记n次
  • $:在字符串末尾匹配
  • ::文字冒号

相关问题 更多 >