试图在Python中将\ t替换为带有正则表达式的\,但结果是"不可用类型:列表"错误

时间:2015-07-20 03:03:47

标签: python regex compiler-errors

我是编程新手,已经检查了其他人的问题,以确保我使用一个好方法用空格替换制表符,知道我的正则表达式是正确的,并且还明白我的错误是什么( "不可用的类型'列表')。但即使如此,我还是不知所措。任何帮助都会很棒!

我有一个大文件,我已经分成了几行。最终,我需要访问每行的前3个元素。目前,当我打印一行时,没有额外的re.sub代码行,我得到这样的东西:[' blah \ tblah \ tblah'],当我想要['等等等等等等] 39;]

我的代码是

f = open(text.txt)
raw = f.read()
raw = raw.lower()

lines = raw.splitlines()
lines = re.sub(r'\t', lines, '\s')

print lines[0:2] #just to see the first few examples

f.close()

当我打印没有正则表达式子位的前几行时,它工作正常。然后当我添加该行以尝试更改行时,我收到错误。我知道列表是可更改的,因此无法进行哈希处理......但我并没有尝试使用哈希。我只是想在大文本文件中用\ s替换\ t以使程序更易于使用。我不认为我将如何更改为\ s是有问题的,因为根据此错误,我改变它的任何方式都会破坏我的代码。我该怎么办?!任何帮助都非常感激。 :')

1 个答案:

答案 0 :(得分:1)

您需要更改re.sub函数中存在的参数的顺序。另请注意,您无法在\s函数中使用正则表达式re.sub作为第二个参数。 re.sub的语法必须是re.sub(regex,replacement,string)

lines = raw.splitlines()
lines = [re.sub(r'\t', ' ', line) for line in lines]

raw.splitlines()返回一个列表,然后将其分配给名为lines的变量。因此,您需要将re.sub函数应用于列表中的每个项目,因为re.sub不会直接应用于列表。