Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式替换函数包含的文本太多_Python_Regex - Fatal编程技术网

Python 正则表达式替换函数包含的文本太多

Python 正则表达式替换函数包含的文本太多,python,regex,Python,Regex,我是python新手。我的脚本(如下)包含一个名为 用于转换的“fn_regex_raw_date_string” 像这样的“原始”日期字符串:2011年10月31日星期一晚上8:15 输入如下日期字符串:_2011-10-31_PM_8-15_ 问题1:“原始”日期字符串包含无关内容时 字符,例如(2011年10月31日星期一晚上8:15),如何 我修改正则表达式例程以排除无关字符 I was tempted to remove my comments from the script be

我是python新手。我的脚本(如下)包含一个名为 用于转换的“fn_regex_raw_date_string” 像这样的“原始”日期字符串:2011年10月31日星期一晚上8:15 输入如下日期字符串:_2011-10-31_PM_8-15_

问题1:“原始”日期字符串包含无关内容时 字符,例如(2011年10月31日星期一晚上8:15),如何 我修改正则表达式例程以排除无关字符

  I was tempted to remove my comments from the script below to make it 
     simpler to read, but I thought it might be more helpful for me to leave 
     them in the script.
问题2:我怀疑我应该编写另一个函数,它将 将“2011-10-31_PM_8-15_”中的“十月”替换为“11”。但我不能 帮助了解是否有某种方法可以将该功能包含在 my fn_regex_raw_date_string函数

任何帮助都将不胜感激

谢谢,, 马塞波

import sys
import re, pdb
#pdb.set_trace()

def fn_get_datestring_sysarg():
    this_scriptz_FULLName = sys.argv[0]
    try:
        date_string_raw = sys.argv[1]
    #except Exception, e:
    except Exception:
        date_string_raw_error = this_scriptz_FULLName + ':  sys.argv[1] error:  No command line argument supplied'
        print date_string_raw_error
    #returnval = this_scriptz_FULLName + '\n' + date_string_raw
    returnval = date_string_raw
    return returnval

def fn_regex_raw_date_string(date_string_raw):
    # Do re replacements
    # p:\Data\VB\Python_MarcsPrgs\Python_ItWorks\FixCodeFromLegislaturezCalifCode_MikezCode.py
    # see also (fnmatch) p:\Data\VB\Python_MarcsPrgs\Python_ItWorks\bookmarkPDFs.aab.py

    #srchstring = r"(.?+)(Sun|Mon|Tue|Wed|Thu|Fri|Sat)(, )(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)( )([\d]{1,2})(, )([\d]{4})( at )([\d]{1,2})(\:)([\d]{1,2})( )(A|P)(M)(.?+)"
    srchstring = r"(Sun|Mon|Tue|Wed|Thu|Fri|Sat)(, )(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)( )([\d]{1,2})(, )([\d]{4})( at )([\d]{1,2})(\:)([\d]{1,2})( )(A|P)(M)"

    srchstring = re.compile(srchstring)    
    replacement = r"_\7-\3-\5_\13M_\9-\11_"
    #replacement = r"_\8-\4-\6_\14M_\10-\12_"    
    regex_raw_date_string = srchstring.sub(replacement, date_string_raw)

    return regex_raw_date_string

    # Mon, Oct 31, 2011 at 8:15 PM  
if __name__ == '__main__':
    try:
        this_scriptz_FULLName = sys.argv[0]
        date_string_raw = fn_get_datestring_sysarg()
        date_string_mbh = fn_regex_raw_date_string(date_string_raw)
        print date_string_mbh
    except:
        print 'error occurred - fn_get_datestring_sysarg()'

您可能想使用python的标准日期时间:


此代码使用正则表达式,在匹配缩短的工作日之前替换字符串开头的所有内容,然后在匹配AM或PM之后替换字符串结尾的所有内容

然后调用
datetime.strtime(date\u str,date\u format)
,它完成了解析的艰苦工作,并为我们提供了一个
datetime
实例:

从日期时间导入日期时间
导入日历
进口稀土
# -------------------------------------
#_months=“|”。.join(calendar.month_缩写[1:])
_工作日=“|”。加入(日历日)
_clean_regex=re.compile(r”“”
^
.*?
(?=“”“+”工作日+“”)
|
(?