gpt4 book ai didi

python - 尝试用Python中的正则表达式替换\t为\s,但结果出现 "Unhashable type:list"错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:49 24 4
gpt4 key购买 nike

我是编程新手,并且已经检查过其他人的问题,以确保我使用一种好的方法将制表符替换为空格,知道我的正则表达式是正确的,并且还了解我的错误到底是什么(“Unhashable type '列表')。但即便如此,我还是不知道该怎么办。任何帮助都会很棒!

我有一个大文件,已将其分成几行。最终我需要访问每行的前 3 个元素。目前,当我打印一行,没有额外的 re.sub 代码行时,当我想要 ['blah blah blah'] 时,我会得到如下内容: ['blah\tblah\tblah']。

我执行此操作的代码是

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 ,以使程序更易于使用。我认为我将\t 更改为\s 的方式没有问题,因为根据此错误,我更改它的任何方式都会破坏我的代码。我该怎么办?!非常感谢任何帮助。 :')

最佳答案

您需要更改 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 不会直接应用于列表。

关于python - 尝试用Python中的正则表达式替换\t为\s,但结果出现 "Unhashable type:list"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com