首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在最后一个数字之后拆分字符串

如何在最后一个数字之后拆分字符串
EN

Stack Overflow用户
提问于 2022-05-24 22:37:15
回答 3查看 96关注 0票数 1

要清理数据集,我需要在最后一个数字之后拆分一个字符串。知道吗?

我的数据文件:

代码语言:javascript
复制
data = {'addr':[
         "510 -1, Cleveland St", 
         "RC-20-5345 Poplar Street", 
         "3600 Race Avenue Richardson"]}

df = pd.DataFrame(data)

   addr
_____________________________________
   510 -1, Cleveland St
   RC-20-5345 Poplar Street
   3600 Race Avenue Richardson

我试着用这个表达式,但是我错过了第二行的楼层编号(RC)。

代码语言:javascript
复制
df["split1"] = df["addr"].str.extract(r"(\d+[-\ ]+\d*)")

  split1   | split2
___________|_________________________
510 -1     |  , Cleveland St
20-5345    |  Poplar Street
3600       |  Race Avenue Richardson

我想要的东西:

代码语言:javascript
复制
  split1   | split2
___________|_________________________
510 -1     |  , Cleveland St
RC-20-5345 |  Poplar Street
3600       |  Race Avenue Richardson
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-24 22:56:34

代码语言:javascript
复制
def splitByLastDigit(x):
    lastDigit=0
    splitOne=""
    splitTwo=""
    finalArray=[]
    for i in range(0,len(x)):
        if x[i].isdigit() and i > lastDigit:
            lastDigit=i

    for i in range(0,len(x)):
        if i <= lastDigit:
            splitOne+=x[i]
        else:
            splitTwo+=x[i]
    if len(splitTwo.strip()) == 1 and splitTwo.strip().isalpha():
        return [splitOne+splitTwo]
    finalArray.append(splitOne)
    finalArray.append(splitTwo)
    return finalArray

把这个解决方案写下来了。它有点粗糙(当然可以做得更优雅),但是用您提供的三个示例进行了测试,并完成了工作。

很简单的主意。收集最后一个数字的索引,然后另一个循环检查该索引之前和之后的字符。最后,向它追加一个数组并返回最终结果。

票数 1
EN

Stack Overflow用户

发布于 2022-05-24 22:46:01

在正则表达式的前面添加一个通配符匹配怎么样?

代码语言:javascript
复制
df["split1"] = df["addr"].str.extract(r"(.*\d+[-\ ]+\d*)")
票数 2
EN

Stack Overflow用户

发布于 2022-05-24 23:02:25

为了得到zyd的答案,捕获另一组中的其余部分

代码语言:javascript
复制
data = {'addr':[
         "510 -1, Cleveland St", 
         "RC-20-5345 Poplar Street", 
         "3600 Race Avenue Richardson"]}

df = pd.DataFrame(data)
df[['split1','split2']] = df["addr"].str.extract(r"(.*\d+[-\ ]+\d*)(.+)")
代码语言:javascript
复制
                          addr       split1                  split2
0         510 -1, Cleveland St       510 -1          , Cleveland St
1     RC-20-5345 Poplar Street  RC-20-5345            Poplar Street
2  3600 Race Avenue Richardson        3600   Race Avenue Richardson
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72370167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档