if search_string in line: TypeError: a bytes-like object is required, not 'str'
时间: 2023-09-21 21:09:17 浏览: 81
解决Python中报错TypeError: must be str, not bytes问题
3星 · 编辑精心推荐
抱歉,我之前的回答还是有错误。根据您给出的错误信息,看起来您正在处理字节流数据而不是字符串数据。在这种情况下,您需要使用字节字符串进行搜索。
以下是修正后的代码:
```python
def find_string_in_file(filename, search_string):
with open(filename, 'rb') as file:
lines = file.readlines()
for index, line in enumerate(lines):
if search_string.encode('utf-8') in line:
target_line = line.strip().decode('utf-8')
next_line = lines[index + 1].strip().decode('utf-8')
return target_line, next_line
return None
filename = 'data.txt'
target_string = '特定字符串'
result = find_string_in_file(filename, target_string)
if result:
target_line, next_line = result
print(f"目标行:{target_line}")
print(f"目标行后面的数据:{next_line}")
else:
print(f"在文件中未找到包含 '{target_string}' 的行。")
```
修正后的代码将打开文件时使用二进制模式(`'rb'`),并且在搜索目标字符串时使用了字节字符串(`search_string.encode('utf-8')`)。在找到目标行后,我们将其从字节字符串解码为UTF-8编码的普通字符串(`line.strip().decode('utf-8')`)。
请注意,这里假设了文件内容是使用UTF-8编码的。如果文件内容使用其他编码,您需要相应地调整解码的方式。
非常抱歉给您带来困惑,并感谢您的指正。如果您还有其他问题,请随时提问。
阅读全文