python - 如果python中的某些条件,将字符串附加到上一行
问题描述
我有单列的 csv 文件,在某些情况下,最后一个值会获得更多空间并创建新行,在这里我需要找出并将其附加到上一行
我的python代码:
with open("01.csv", 'r+') as file:
text = str()
for line in file:
if line[0:3] == "2021":
text = "{} {}".format(text, line.strip())
else:
text = "{}\n{}".format(text, line.strip())
file.seek(0)
file.write(text[1:])
如何删除 || 这在最后,并在所有出现的情况下都附加下一行。
第 10 行要附加到第 9 行,第 21 行要附加到第 20 行,依此类推。
解决方案
如果您还没有看到它,则不能“附加下一行”。您的解决方案必须知道所有附加都已完成,然后才能对一行进行操作,这意味着您需要缓冲下一行。
我认为您正在尝试随时重新组合整个文件text
,这不是文件处理的好模型。而且,如果您的测试有效,则操作实际上是错误的方式-您希望在“20”开始行时包含换行符。我建议您改为写入另一个新文件或简单地立即纠正问题,如下所示。
with open("01.csv", 'r+') as file:
complete_line = None
for line in file:
if complete_line is None:
initial_action()
complete_line = line
elif line[0:2] == "20": # compatible with next 79 years
act_on(complete_line)
complete_line = line
else:
complete_line += line
act_on(complete_line)
whereintial_action
和act_on
are 功能供您实现。
推荐阅读
- html - Rich Link Preview 不适用于 Whatsapp IOS 但适用于 Android
- android - 如何在活动之间导航时将服务绑定到多个活动而不停止?
- c# - 在 ASP.NET MVC 中使用 ajax 将数据从视图传递到控制器
- docker - 詹金斯“Docker 构建和发布”插件不起作用
- java - 在 VSCode 的 Microsoft Debugger for Java 扩展中,是否可以让它知道 Lombok?
- angular - 有条件地在 Angular Http 拦截器中设置标题
- database - 对多个索引的 Elasticsearch 查询非常慢
- c# - 覆盖使用 Polly 定义的 HttpClientFactory 策略
- javascript - createObjectURL:使用 Blob 时在 Safari 中键入错误
- javascript - 如何在函数调用中从数组中一一返回值?