删除数据文件中的一些分号

时间:2019-01-20 11:03:49

标签: python regex notepad++ sublimetext3 sublimetext2

您好,我想删除数据文件中的一些分号,如下所示:

a;bfcse;g
g;qdq;d;u
q;g;sd;;o
c;dd;ea;b
w;;rz;z;m

我想使用正则表达式进行此操作(因为我尝试选择一列并进行替换,但是它不起作用,因此记事本中的按钮为灰色,无法在我的选择中进行替换):

a;bfcse;g
g;qdqd;u
q;gsd;o
c;ddea;b
w;rzz;m

我认为可以像子字符串一样工作,但是使用notepad ++和sublimetext很难...

你有什么想法吗?

非常感谢您!

编辑:但是我认为很明显我想做的是在该区域中什么都不要删除半冒号:

  -------
a;|bfcse|;g
g;|qdq;d|;u
q;|g;sd;|;o
c;|dd;ea|;b
w;|;rz;z|;m
  -------

2 个答案:

答案 0 :(得分:1)

使用记事本++

  • Ctrl + H
  • 查找内容:(^.+?;|\G)(.*?);?(?=.*?;.+?$)
  • 替换为:$1$2
  • 检查环绕
  • 检查正则表达式
  • 取消检查. matches newline
  • 全部替换

说明:

(               # group 1
  ^             # beginning of line
  .+?           # 1 or more any character but newline, not greedy
  ;             # a semicolon
 |              # OR
  \G            # restart from last match position
)               # end group 1
(.*?)           # group 2, 0 or more any character but newline, not greedy
;?              # optional semicolon
(?=             # start lookahead, make sure we have after:
  .*?           # 0 or more any character but newline, not greedy
  ;             # a semicolon
  .+?           # 1 or more any character but newline, not greedy
  $             # end of line
)               # end of lookahead

替换:

$1          # content of group 1
$2          # content of group 2

给定示例的结果

a;bfcse;g
g;qdqd;u
q;gsd;o
c;ddea;b
w;rzz;m

enter image description here

答案 1 :(得分:0)

我将创建一个新变量,并添加所有非分号的内容,如下所示:

nosemicolons = ('')
somesemicolons = ('''  -------
a;|bfcse|;g
g;|qdq;d|;u
q;|g;sd;|;o
c;|dd;ea|;b
w;|;rz;z|;m
  -------''')
while len(somesemicolons) != 0:
    if somesemicolons[:1] != ';':
        nosemicolons = nosemicolons + somesemicolons[:1]
        somesemicolons = somesemicolons[1:]
    else:
        somesemicolons = somesemicolons[1:] #placeholder
print(nosemicolons)

哪个输出:

  -------
a|bfcse|g
g|qdqd|u
q|gsd|o
c|ddea|b
w|rzz|m
  -------

可悲的是,它看起来不像一张桌子。您可以对其进行更改,使其在输出中添加'',而不添加任何内容(请参见占位符)。希望有帮助。