【问题标题】:upper casing all values within quotes " " except those coming after certain words大写引号中的所有值“”除了某些单词之后的值
【发布时间】:2020-06-04 08:22:08
【问题描述】:

我正在尝试将引号“”中的每个单词替换为大写单词,除了熊猫列中单词“then”之后的单词: 例如:

0 There was a "quick" "brown" fox who "jumped" over the wall then "fell" and broke its "tooth"

输出应该是:

0 There was a "QUICK" "BROWN" fox who "JUMPED" over the wall then "fell" and broke its "TOOTH"

虽然我能够找到引号中的单词,但我无法排除紧跟在“then”之后的单词。

df.str.replace({r'"(.*?)"':r'\U$1') #this will select and replace all values in quotes to uppercase also values after then

请帮忙。

【问题讨论】:

  • 你可以试试df.str.replace({r'(?<!then\s)"(\w*?)"':r'\U$1')
  • 非常感谢...它奏效了。能否请您提及我可以研究更多关于正则表达式的资源?谢谢
  • 我已将我的建议添加为下面的代码以及我认为有用的链接。希望这些对你也有帮助。您是否还可以更新您最终用于实现结果的确切 df.str.replace 代码?我可以使用我输入的正则表达式找到单词,但我无法按照您的方式替换它。所以,如果你能说得出来,我也会学到一些东西:-)

标签: python regex pandas replace


【解决方案1】:

String= 他“吃了”一只“企鹅”,然后“玩了一个汉堡包。 然后将字符串转换为在单词处拆分的列表。将 list[0] 转换为字符串,并使用 if '"' is in 子句隔离引用的单词。大写。然后用空格分隔,使用 join 将整个字符串重新组合在一起,然后就可以了

【讨论】:

    【解决方案2】:

    您可以使用正则表达式(?<!then\s)"(\w*)" 来查找引号中不以“then”和“space”开头的单词

    "(\w*)" = 在引号内查找单词

    (?<!then\s) = 确保与"(\w*)"匹配的单词前面没有“then”和“space”(否定后视)

    RegexDemo你可以在这里看到正则表达式的演示(你可以放几个其他的字符串来检查正则表达式是如何作用的)

    Regex-info这是一个非常全面的关于正则表达式的网站(是所有正则表达式的首选网站),几乎所有的正则表达式概念都应该在这里得到解答。它不依赖于编程语言,并且包含大量信息。

    Regex Cheat-Sheet 我会说从这个备忘单开始,它非常简单并且用简单的话解释。我觉得它很有帮助。

    【讨论】:

    • 这很有帮助..谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多