如何实现:正则对一段文本匹配并用自定义函数替换匹配内容
Python
我的需求是将一个文件中所有的日期(格式为:七月 08, 2017 9:30:10 上午)换成标准格式日期。
其中parse函数已经写好(接收此类日期字符串,并返回datetime类型)
但是我试图匹配并替换的时候发现问题了:python中re.sub()的替换内容是固定的字符串,没办法用自己的函数来替换
replace()函数同样无法将匹配到的字符串作为函数的参数。
请教各位大神们,谢谢!
转换函数
我的需求是将一个文件中所有的日期(格式为:七月 08, 2017 9:30:10 上午)换成标准格式日期。
其中parse函数已经写好(接收此类日期字符串,并返回datetime类型)
但是我试图匹配并替换的时候发现问题了:python中re.sub()的替换内容是固定的字符串,没办法用自己的函数来替换
replace()函数同样无法将匹配到的字符串作为函数的参数。
请教各位大神们,谢谢!
转换函数
def parse_cn_date(date_str):
"""
源文件 catalina.2017-06-06.log
日期格式 七月 08, 2017 9:30:10 上午
:param date_str: <unicode> raw date
:return: <datetime>
"""
if not isinstance(date_str, unicode):
raise AttributeError
month_regex = u'([\u4e00]|[\u4e8c]|[\u4e09]|[\u56db]|[\u4e94]|[\u516d]' \
u'|[\u4e03]|[\u516b]|[\u4e5d]|[\u5341]){1,2}[\u6708]'
year = int(re.search(u'\d{4} ', date_str).group().strip())
day = int(re.search(u'\d{2},', date_str).group()[:-1])
month = int(month_dict[re.search(month_regex, date_str).group()])
is_pm = re.search(u'[\u4e00-\u9fa5][\u5348]', date_str).group()[0] == u'下'
time = re.search(u'\d{1,2}:\d{1,2}:\d{1,2}', date_str).group()
hour = int(time.split(u':')[0])
if is_pm:
hour += 12
minute = int(time.split(u':')[1])
second = int(time.split(u':')[2])
return datetime(year, month, day, hour, minute, second)
...全文
相关推荐
python 实现批量替换文本中的某部分内容
首先,需要导入Python的两个常用模块:`re`(正则表达式)和`os`(操作系统相关功能)。这两个模块是实现文本操作的关键。
JavaScript 替换所有匹配内容及正则替换方法
这在需要替换字符串中所有匹配项的情况下显然是不够的。为了应对这个问题,我们可以自定义一个函数,如`replaceAll`,来实现全局替换的功能。
js使用正则实现ReplaceAll全部替换的方法
";var strNew = str.replace(new RegExp("word", "g"), "Excel");```这段代码和第一段代码实现了相同的效果,但是这里使用了RegExp构造函数来动态创建正则表达式对象
PHP实现正则匹配所有括号中的内容
在PHP中,结合`preg_match_all`函数,我们可以轻松地实现对括号内容的提取。希望这篇文章对你理解PHP正则表达式和实现括号内容匹配有所帮助。如有任何疑问或需要进一步的解释,欢迎随时提问。
Python基于正则表达式实现文件内容替换的方法
Python提供了正则表达式功能,可以非常方便地实现对文件内容的搜索和替换,特别是在处理文本数据时显示出极大的优势。


