首页 > 解决方案 > 在python中用单个选项卡替换多个选项卡

问题描述

我是python编程的新手。我正在阅读一个制表符分隔的文件,并且想做一个可以用单个制表符替换多个制表符(分隔两列)的操作。

with open('file.tsv','r') as fin:
    cr = csv.reader(fin, delimiter='\t')
    filecontents = [line for line in cr]

我尝试通过加入功能来做到这一点

with open('file.tsv','r') as fin:
    cr = csv.reader(fin, delimiter='\t')
    filecontents = ''.join([line.replace('\t\t', '\t') for line in cr])

我得到以下错误。

AttributeError: 'list' object has no attribute 'replace'

我该怎么做?

标签: pythonfile-handling

解决方案


您可以使用

re.sub

给它 "[\t]+" 是告诉它找到一个或多个选项卡并将其替换为 1。
注意 "\\" 的使用是告诉 python 它是一个特殊字符。

import re
s = "a\\t\\t\\t\\t\\ta\\t\\t"
print (re.sub(r"[\\t]+", "\t", s))

output >>>
a   a

推荐阅读