python - 协调数组切片器
问题描述
我已经构建了一个函数来从文本条目中删除无关的垃圾。它使用数组切片器。我现在需要协调已被我的清理功能删除的行,以便所有lines_lost +lines_kept = 总行数。源代码如下:
def header_cleanup(entry_chunk):
# Removes duplicate headers due to page-continuations
entry_chunk = entry_chunk.replace("\r\n\r\n","\r\n")
header = lines[1:5]
lines[:] = [x for x in lines if not any(header == x for header in headers)]
lines = headers + lines
return("\n".join(lines))
我如何计算切片/突变后未出现在行中的行,即:
original_length = len(lines)
lines = lines.remove_garbage
garbage = lines.garbage_only_plz
if len(lines) + len(garbage) == original_length:
print("Good!")
else:
print("Bad! ;(")
最终答案最终看起来像这样:
def header_cleanup(entry_chunk):
lines = entry_chunk.replace("\r\n\r\n","\r\n")
line_length = len(lines)
headers = lines[1:5]
saved_lines = []
bad_lines = []
saved_lines[:] = [x for x in lines if not any(header == x for header in headers)]
bad_lines[:] = [x for x in lines if any(header == x for header in headers)]
total_lines = len(saved_lines) + len(bad_lines)
if total_lines == line_length:
print("Yay!")
else:
print("Boo.")
print(f"{rando_trace_info}")
sys.exit()
final_lines = headers + saved_lines
return("\n".join(final_lines))
Okokokokokk - 我知道你在想:这是多余的,但它是必需的。在解决方案后打开编辑以获取更多pythonic。谢谢考虑。
解决方案
不要重用lines
变量,使用不同的变量,这样你就可以从原始行中取出垃圾。
clean_lines = remove_garbage(lines)
garbage = garbage_only(lines)
if len(clean_lines) + len(garbage) == len(lines):
print("Good!")
else:
print("Bad!")
您可能希望有一个返回两者的函数:
clean_lines, garbage = filter_garbage(lines)
推荐阅读
- uml - 没有生命线的序列图合法吗?
- spring-boot - H2 create-drop 模式下的唯一索引或主键违规
- kubernetes - Kubernetes env 变量包含另一个 cat'd 变量
- github - 使用 jupyter notebook 运行 github julia 代码
- responsive - Bootstrap 5 - 表响应类
- python - 使 __init__ 变量自动成为属性
- reactjs - 我是否必须拆分我的 React 应用才能使用 NGINX 的子域?
- python - 尝试将 CSV 写入 S3 的 Lambda S3 内存错误
- c# - ASP.NET Core(单元测试未涵盖)是否存在任何运行时扫描以预填充 ELMAH?
- java - 尝试在 hdfs 集群上运行示例 spark 代码时,共享内存文件的空间不足