gpt4 book ai didi

python - 正则表达式对由空格分隔的单词进行分组

转载 作者:行者123 更新时间:2023-12-03 15:34:12 29 4
gpt4 key购买 nike

我有一个数据框,其中一列是一系列字符串,其中不同的短语是单个单词或由空格分隔的多个单词;每个单词的第一个字母是大写的(例如分别是“Strawberry”或“Strawberry Jam”)。相比之下,如果不是同一短语的一部分,则单词不会间隔开(例如“JamApple”)。

df = pd.DataFrame({
'foo': ['Strawberry JamApple', 'BananaPear CrumblePotato', 'Almond Cake'],
'bar': ['A', 'B', 'C'],
'baz': [1, 2, 3],
'zoo': ['x', 'y', 'z'],
})


foo bar baz zoo
0 Strawberry JamApple A 1 x
1 BananaPear CrumblePotato B 2 y
2 Almond Cake C 3 z
我如何使用正则表达式根据上述规则将字符串中的短语分开(分为“草莓酱”、“苹果”、“香蕉”、“梨碎”、“土 bean ”、“杏仁蛋糕”)。并提取它们?即,获取以下数据框:
   foo
0 Strawberry Jam
0 Apple
1 Banana
1 Pear Crumble
1 Potato
2 Almond Cake
我从以下代码开始:
df.loc[:, 'foo'].str.extractall('([A-Z]{1}[a-z]+)').copy()
但是,这将所有单词分开,并且不使用空格来“连接”它们。我将如何包括后者?
谢谢。

最佳答案

Series.str.split + explode

df['foo'].str.split(r'(?<=[a-z])(?=[A-Z])').explode()
0    Strawberry Jam
0 Apple
1 Banana
1 Pear Crumble
1 Potato
2 Almond Cake
Name: foo, dtype: object
正则表达式详情:
  • (?<=[a-z]) : Positive Lookbehind 匹配范围内的单个字符 az
  • (?=[A-Z]) : Positive Lookahead 匹配范围内的单个字符 AZ

  • regex demo

    关于python - 正则表达式对由空格分隔的单词进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66675837/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com