簡體   English   中英

正則表達式+ Python從制表符分隔文件的值中刪除特定的尾隨和結束字符

[英]Regex + Python to remove specific trailing and ending characters from value in tab delimited file

自完成任何正則表達式以來已經有好幾年了,所以在這里尋求專家的幫助,因為這可能是一件微不足道的練習:)

我有一個制表符分隔的文件,並且在每一行上都有某些字段,其值如下:

  • FOO
  • 酒吧
  • b“ foo的酒吧”
  • b'bar foo'
  • b'carbar”

(文件中的完整行可能類似於:

123 \\ t b'bar foo' \\ tabc \\ t123 \\ r \\ n

我想擺脫每一行中該字段的所有前導b',b”和尾隨“,'。 因此,鑒於上面的示例行,在運行正則表達式后,我將得到:

123 \\ t bar foo \\ tabc \\ t123 \\ r \\ n

如果您可以給我python blurb以便在文件上運行它,將獲得加分。

(^ | \\ t)b [\\“']應該與前導符匹配,對於尾隨符:

\\“'應該做

在Python中,您可以執行以下操作:

import re
r1 = re.compile("(^|\t)b[\"']")
r2 = re.compile("[\"'](\t|$)")

然后就用

r1.sub("\\1", yourString)
r2.sub("\\1", yourString)

您可以使用的每一行

re.sub(r'''(?<![^\t\n])\W*b(["'])(.*)\1\W*(?![^\t\n])''', r'\2', line)

對於獎勵積分:

import re

pattern = re.compile(r'''(?<![^\t\n])\W*b(["'])(.*?)\1\W*?(?![^\t\n])''')
with open('outfile', 'w') as outfile:
    for line in open('infile'):
        outfile.write(pattern.sub(r'\2', line))
>>> "b\"foo's bar\"".replace('b"',"").replace("b'","").rstrip("\"'")
"foo's bar"
>>> "b'bar foo'".replace('b"',"").replace("b'","").rstrip("\"'")
'bar foo'
>>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM