Python写入文件错误,应为string/bu

2024-10-02 14:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码可以迭代地替换关键字中的特定文本, 问题:当我提供一个文件作为输入我得到错误

编码:(当代码中提供文本时效果良好)

import re, itertools
car = ['skoda', 'audi', 'benz']
text = """
I have a car="mycar"
My friend has a vehicle="myvehicle"
       My uncle have a car="mycar"
Second verse same as the first
"""
it = itertools.cycle(car)
newtext = re.sub(r'mycar|myvehicle', lambda _: next(it), text)
print newtext

编码:当文件作为输入时

^{pr2}$

我得到的错误是:

File "C:\Python27\replmay.py", line 8, in <module>
    newtext = re.sub(r'mycar|myvehicle', lambda _: next(it), text)
  File "C:\Python27\lib\re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
>>>

请帮我把输出写入文件!在


Tags: 文件代码text文本re编码myhave
1条回答
网友
1楼 · 发布于 2024-10-02 14:29:26

你的回溯与你的代码不匹配。在回溯中,text被使用,这是一个文件对象。在

您的代码也不能与text1一起工作;这是一个列表,而不是str。不要使用readlines(),而是使用read()

with open('ckili.txt','r') as fileob:
    text = fileob.read()
    it = itertools.cycle(keywords2)
    newtext = re.sub(r'mycar|myvehicle', lambda _: next(it), text)

或者分别处理每一行。请注意,我擅自更改了名称;text不是文件对象的最佳名称。在

您似乎正在将模块导入交互式解释器。知道模块导入是缓存的,您需要显式地重新启动解释器或在更改后重新加载模块。在

相关问题 更多 >