Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-以字节为单位替换字符串(还有一个';str';不支持缓冲区接口)_Python_Regex_Python 3.x_Replace - Fatal编程技术网

python-以字节为单位替换字符串(还有一个';str';不支持缓冲区接口)

python-以字节为单位替换字符串(还有一个';str';不支持缓冲区接口),python,regex,python-3.x,replace,Python,Regex,Python 3.x,Replace,我有一个“cell”变量。请注意,它不是htm或html文件。它是.xlsx文件单元的内容。其中的文本有许多链接(例如,这里只有2个),它们都应该被替换 还有一个包含原始链接和替换链接的txt文件。 解析txt文件后,我们有两个列表: is_list - list of links which should be deleted should_be_list - list of links which should be instead of the deleted ones. 所以 重新导入

我有一个“cell”变量。请注意,它不是htm或html文件。它是.xlsx文件单元的内容。其中的文本有许多链接(例如,这里只有2个),它们都应该被替换

还有一个包含原始链接和替换链接的txt文件。 解析txt文件后,我们有两个列表:

is_list - list of links which should be deleted
should_be_list - list of links which should be instead of the deleted ones.
所以

重新导入
2007年,路易斯安那州西南部开始提供家庭护理服务。我们的使命是提供优质的家居模型

以下是您作为特许经营人将提供的服务列表

  • 公寓和家庭清洁
  • 厨师服务
  • 家庭非医疗老年人护理中的杂工和重塑服务
  • 室内装饰
  • 草坪护理服务
    • 如果您是一名企业家,希望进入家庭护理行业,然后是一个关怀家庭护理今天,我们将邮寄给您我们的特许经营信息小册子。来加入我们获胜的队伍。

      ' is_list=['', ' '] 应该是列表=['', ' ']
如果我尝试使用replace-我会收到以下错误:

for i in range(2):
    cell.replace(is_list[i], should_be_list[i])

print (cell)
"""
Traceback (most recent call last):
  File "I:\15.py", line 11, in <module>
    cell.replace(is_list[i], should_be_list[i])
TypeError: 'str' does not support the buffer interface

"""
for i in range(2):
    result = re.sub(is_list[i], should_be_list[i], cell)
print (cell)

"""
Traceback (most recent call last):
  File "I:\15.py", line 24, in <module>
    result = re.sub(is_list[i], should_be_list[i], cell)
  File "c:\Python34\lib\re.py", line 179, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "c:\Python34\lib\re.py", line 294, in _compile
    p = sre_compile.compile(pattern, flags)
  File "c:\Python34\lib\sre_compile.py", line 568, in compile
    p = sre_parse.parse(p, flags)
  File "c:\Python34\lib\sre_parse.py", line 760, in parse
    p = _parse_sub(source, pattern, 0)
  File "c:\Python34\lib\sre_parse.py", line 370, in _parse_sub
    itemsappend(_parse(source, state))
  File "c:\Python34\lib\sre_parse.py", line 516, in _parse
    raise error("bad character range")
sre_constants.error: bad character range
"""
范围(2)内的i的
:
cell.replace(是列表[i],应该是列表[i])
打印(单元格)
"""
回溯(最近一次呼叫最后一次):
文件“I:\15.py”,第11行,在
cell.replace(是列表[i],应该是列表[i])
TypeError:“str”不支持缓冲区接口
"""
如果尝试使用re.sub,则会出现以下错误:

for i in range(2):
    cell.replace(is_list[i], should_be_list[i])

print (cell)
"""
Traceback (most recent call last):
  File "I:\15.py", line 11, in <module>
    cell.replace(is_list[i], should_be_list[i])
TypeError: 'str' does not support the buffer interface

"""
for i in range(2):
    result = re.sub(is_list[i], should_be_list[i], cell)
print (cell)

"""
Traceback (most recent call last):
  File "I:\15.py", line 24, in <module>
    result = re.sub(is_list[i], should_be_list[i], cell)
  File "c:\Python34\lib\re.py", line 179, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "c:\Python34\lib\re.py", line 294, in _compile
    p = sre_compile.compile(pattern, flags)
  File "c:\Python34\lib\sre_compile.py", line 568, in compile
    p = sre_parse.parse(p, flags)
  File "c:\Python34\lib\sre_parse.py", line 760, in parse
    p = _parse_sub(source, pattern, 0)
  File "c:\Python34\lib\sre_parse.py", line 370, in _parse_sub
    itemsappend(_parse(source, state))
  File "c:\Python34\lib\sre_parse.py", line 516, in _parse
    raise error("bad character range")
sre_constants.error: bad character range
"""
范围(2)内的i的
:
result=re.sub(是列表[i],应该是列表[i],单元格)
打印(单元格)
"""
回溯(最近一次呼叫最后一次):
文件“I:\15.py”,第24行,在
result=re.sub(是列表[i],应该是列表[i],单元格)
文件“c:\Python34\lib\re.py”,第179行,子文件
return\u compile(模式、标志).sub(repl、字符串、计数)
文件“c:\Python34\lib\re.py”,第294行,在编译中
p=sre_compile.compile(模式、标志)
文件“c:\Python34\lib\sre_compile.py”,第568行,在compile中
p=sre_parse.parse(p,标志)
文件“c:\Python34\lib\sre_parse.py”,第760行,在parse中
p=_parse_sub(源,模式,0)
文件“c:\Python34\lib\sre_parse.py”,第370行,在_parse_sub中
itemsappend(_解析(源、状态))
文件“c:\Python34\lib\sre_parse.py”,第516行,在_parse中
引发错误(“错误字符范围”)
sre_常量。错误:错误的字符范围
"""

请帮忙。如何进行替换?

对文本进行编码并使用它。我选择ascii是因为我对原始文本文件和嵌入URL的编码方式了解不够。有几种方法可以处理url编码(主机名往往不同于路径和查询),我想这里我将避免触及第三条轨道

is_list_b = [item.encode('ascii') for item in is_list]
should_be_list_b = [teim.encode('ascii') for item in should_be_list]

…替换,不抛出任何错误!我刚试过!替换文本文件的编码是什么?你必须处理非ascii URL吗?@Keerthanarabhakaran但它取代了什么吗?@tdelaney我不知道。它是一个.xlsx文件。(microsoft excel文档)。这个文本是其中一个单元格的内容。你知道如何计算它的编码吗?你期望的输出是什么!任何样品!我照你说的做了,用了替换法。它打印了“cell”,但没有替换任何东西。它现在可以工作了!非常感谢!还应更改for循环中的kine:cell=cell.replace(is_list_b[i],should_be_list_b[i])