【问题标题】:extract fraction and 2 or 4 digit year from mulitple formated strings从多个格式化字符串中提取分数和 2 位或 4 位数字年份
【发布时间】:2015-04-17 20:43:11
【问题描述】:

我有 130,000 多个字符串,其中包含诸如 3/4"、1" 等测量值和诸如 5648 或 222 之类的门牌号,然后根据用户输入的感觉,将年份格式化为 02、92 或 2004那天。我也有 \ 和 - 在那里随机只是为了让它更有趣。

我需要的是:第一个测量值,即 3/4" 或 2" 和 02 年或 1997 年。我尝试了多次拆分和替换,但我似乎并没有走得太远。我在 " 处使用拆分提取了大部分测量值。任何帮助都会很好。有人建议使用正则表达式,但我从未使用过这些。

这里有一些例子:

3/4"-6235\PE-03, 
1"-8018\ \PE-00, 
3/4"-    \ \PE-2004, 
1"-11769\ \74\COPSET, 
PE-85, 
1"-BLDG 1, 
COMM CABLE

这是我目前拥有的。

for featureToTotal in featuresToTotal:
                    id = id + 1
                    # Get each Water Type Time Total 
                    try:                          
                        ValueOne = featureToTotal[1]
                        tmpvalue = ValueOne.replace("\\", "")
                        tmpvalue = tmpvalue.replace("-", " ")
                        tmpvalue = tmpvalue.replace("'", " ")
                        newValue = tmpvalue.decode('string_escape')

                        splitOne = newValue.split('\\')[0]
                        Split2 = splitOne.split('-')[0]                            
                        trysplit = Split2.split('"')[0]
                        #Test for Number                             
                        try:
                            num = trysplit[:1]
                            float(num)
                            strval = str(trysplit)
                            trysplit = strval
                            #featureToTotal[4] = strval
                            #arcpy.AddMessage(str(trysplit)) 
                            #featuresToTotal.updateRow(featureToTotal)
                        except:
                            errstrr = "yep"
                            #print "Nope" + ValueOne +  " " + trysplit

                        buildqury = "INSERT INTO Annos VALUES(" + str(id) + ", ''" + newValue + "'', ''" + trysplit+ "'', ''" + YearTest +  "'')"
                        cur.execute(buildqury)
                    except:
                        strerr = sys.exc_value.message
                        print "Error Splitting  " 

【问题讨论】:

  • 向我们展示您的尝试。你的分裂方式可能有问题。
  • PE-85代表1985年安装的聚乙烯管

标签: python regex string


【解决方案1】:

没有更多信息,这是我能为你做的最好的事情:

items = re.findall(r'(\d+/?\d*)".*?PE-(\d+)', string)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多