在我的日期时间值中,我想使用正则表达式从时间中删除斜杠和冒号并将其替换为下划线

In my date time value I want to use regex to strip out the slash and colon from time and replace it with underscore

我正在使用 Python,Webdriver 进行自动化测试。我的场景在我们网站的管理页面上,我单击添加项目按钮并输入项目名称。

我输入的项目名称格式为LADEMO_IE_05/20/1515:11:38 最后是日期和时间。

我想做的是使用我想找到 / 和 的正则表达式: 并用下划线替换它们 _

我已经计算出正则表达式:

[0-9]{2}[/][0-9]{2}[/][0-9]{4}:[0-9]{2}[:][0-9]{2}

这会找到 2 个数字,然后是 /,接着是 2 个数字,然后是 /,依此类推。

我想用 _ 替换 /:

我可以在 Python 中使用 import re 执行此操作吗?我需要一些语法方面的帮助。

我的方法returns日期是:

def get_datetime_now(self):
            dateTime_now = datetime.datetime.now().strftime("%x%X")
            print dateTime_now #prints e.g. 05/20/1515:11:38
            return dateTime_now

我在文本字段中输入项目名称的代码片段是:

project_name_textfield.send_keys('LADEMO_IE_' + self.get_datetime_now())

输出是例如

LADEMO_IE_05/20/1515:11:38

我希望输出为:

LADEMO_IE_05_20_1515_11_38 

只需使用 strftime() 将日期时间格式化为 desired format:

>>> datetime.datetime.now().strftime("%m_%d_%y%H_%M_%S")
'05_20_1517_20_16'

另一个简单的选项就是使用字符串替换:

s = "your time string"
s = s.replace("/", "_").replace(":", "_")

两种方式:

i) 使用 strftime 格式:

strftime("%m_%d_%y_%H_%M_%S")

ii) 只需使用字符串的replace()方法将'/'和':'替换为'_'

基本上,您想用下划线替换每个不建议使用的字符。为此,您可以简单地使用 str.replace 方法而不是使用正则表达式。例如:

out_string = in_string.replace('/', '_').replace(':', '_')

在这个例子中,第一个替换 returns 一个字符串,所有的斜线都被替换,第二个调用替换冒号。我认为这是替换一两个字符的最简单方法。但是,如果你希望你的程序能够进化,我建议你使用re.sub,如下:

# first we compile the regex, for speed sake
# this regex match every one of the bad characters, and it's modular: just add one, in case
bad_characters = re.compile(r'/|:')

# your code

# replacement
out_string = re.sub(bad_characters, '_', in_string)