我正在尝试使用python和regex修复txt文件格式。为此,我使用这个post作为起点,但我不能让它与我的文件格式。
Regex:
([^1|-])[\n](.)|(.)[\n]([^|-])
我的文件格式是这样的:
|A |B |C |
D |E |
F |G |
我想这样解析它:
|A |B |C |D |E |F |G |
在不删除任何分隔符、管道或内容的情况下,只在它们之间换行。
问题是它替换了换行符附近的管道和其他字符。
我需要在正则表达式中修改什么?
1条答案
按热度按时间lmyy7pcs1#
您的模式
([^1|-])\n(.)|(.)\n([^|-])
使用了左右两个捕获组的交替,每侧总共匹配3个字符。因此,如果您希望结果中包含捕获组数据,则必须在替换中使用这些组。
但是这个否定的字符类
[^1|-]
也可以匹配空格或换行符,并且不考虑多个空格字符。您可以做的是匹配一个管道,然后在换行符周围加上可选的空格,并在替换中使用单个管道。
请参见regex 101 demo。
输出量
因为
\s
* 也可以 * 匹配换行符,所以更短的选项可以使用regex = r"\|\s+"
,但是当没有换行符时,它也会匹配管道后面的空格。