【问题标题】:Pandas and Regex - Proofreading Or Proofreading-Helper-Software RequestedPandas 和 Regex - 需要校对或校对助手软件
【发布时间】:2017-05-15 16:11:34
【问题描述】:

我很难知道我的 RegEx 语法是否做了我真正想要做的事情,并且不知道如何以特定于 Python 的方式校对它。

有人可以校对这个或帮我找一个地方自我校对这是否适合显示 Pandas DataFrame 的行,其中“名称”列下的单元格的值包含不属于英文字母、数字的字符, & 各种常见的标点符号,还是我在某些字符上加了/下斜线?

(我的猜测是我需要反斜杠和方括号。)

(注意:我知道源数据在此列中永远不会有多行单元格值。)

filtereddf = df[~df['Name'].str.match(r'^[a-zA-Z\d_\s.&+-,!@#$%^*();\\/|<>"\'?=:\[\]]+$')]

此外,对于“各种标点符号”有什么更巧妙的技巧,同时确保通常被认为是“字母”的事物只允许使用英文 26 a-z 和 A-Z?

更新:

我收到了关于我在 cmets 中进行自我校对所需的“Python Regex 语法解释器”的推荐——应该考虑将其作为替代方案,而不仅仅是寻求校对帮助。对不起,起初措辞不好的问题;更新了。

【问题讨论】:

  • 您是否考虑过对其进行测试?如果它只是您要检查的正则表达式,请使用例如regex101.com
  • @jonrsharpe,谢谢——右上角的解释正是我自己找不到的。我通过它了解到我实际上需要避开“+”和“-”等......这太棒了!我已经更新了这个问题,所以这将是它的答案——如果你想把它作为一个答案,我会接受它。
  • 你应该删除问题,校对不是主题。

标签: python regex pandas


【解决方案1】:

如果你想搜索非 ASCII 字符,试试这个 RegEx:

[^\x00-\x7F]

在熊猫中:

df = df[df['Name'].str.contains('[^\x00-\x7F]')]

【讨论】:

  • 谢谢,但 ASCII 包含带有重音符号的字符,我正在帮助整理不良数据的人认为这是“有问题的”。 (她正在寻找任何对英语“陌生”的东西。)
  • @k..,不,它不包括7F(十进制127)以上的字符。 IE。它不包括带重音符号的字符
猜你喜欢
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多