【问题标题】:Python regex: having trouble understanding results [duplicate]Python正则表达式:难以理解结果[重复]
【发布时间】:2023-04-04 06:50:02
【问题描述】:

我有一个需要写入磁盘的数据框,但 pyspark 不允许任何这些字符 ,;{}()\\n\\t= 在作为镶木地板文件写入时出现在标题中。

所以我写了一个简单的脚本来检测是否发生这种情况

import re
for each_header in all_headers:
  print(re.match(",;{}()\\n\\t= ", each_header))

但是对于每个标题,都打印了None。这是错误的,因为我知道我的文件在其标题中有空格。
所以,我决定通过执行以下几行来检查它

a = re.match(",;{}()\\n\\t= ", 'a s')
print(a)
a = re.search(",;{}()\\n\\t= ", 'a s')
print(a)

这也导致None 被打印出来。

我不确定我在这里做错了什么。

PS:我用的是python3.7

【问题讨论】:

  • 你可能需要一个字符类[,;{}()\\n\\\\t=]
  • 你的正则表达式匹配这些字符。你试过令牌[]([,;{}\(\)\\n\\t=])吗?
  • 对于上述两个 cmets,我们不需要在字符类中对\n 之类的东西进行双重转义,一个反斜杠就足够了。而(){} 根本不需要任何转义。
  • print((a.groups())) 你可以看到与你的模式匹配的单词

标签:
python
regex