![](/img/trans.png)
[英]Python - Extract specific lines from tab delimited file based on a value in a column
[英]Regex + Python to remove specific trailing and ending characters from value in tab delimited file
自完成任何正則表達式以來已經有好幾年了,所以在這里尋求專家的幫助,因為這可能是一件微不足道的練習:)
我有一個制表符分隔的文件,並且在每一行上都有某些字段,其值如下:
(文件中的完整行可能類似於:
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.