在python中操作文本文件

时间:2018-05-05 10:22:37

标签: python python-3.x

带有折线和短划线的文字:

  

验证我的解决方案是      我需要参加替补考试      精心设计的算法      只有在表测试之后才会这样      该计划是实施的      这个策略幸免于难      发展时间

代码:

def file_string():
    with open('speech.txt','r') as file:
        lines = file.read().split("\n")
     string = []
     for line in lines:
         line = line.replace('-\n','')
         string.append(line)
     return (' '.join(string))

print(file_string())

正确输出:

  

验证我的解决方案是我需要在表格测试之后对该详细算法进行基准测试,该程序 已实现 此策略可以节省开发时间

退出我的代码:

  

验证我的解决方案是我需要在表格测试之后才对该详细算法进行基准测试,该程序 实现 这个策略节省了开发时间

该文本是在文本编辑器中编写的。

我需要这个帮助。

  

应用代码sujerido退出仍然是:

     

验证我的解决方案是我需要进行详细的基准测试    算法只有在表测试之后,程序实现这个    策略节省了开发时间

只有在我阅读用文本编辑器编写的文件时才会发生,我需要创建一个包含这些单词的列表进行比较。

2 个答案:

答案 0 :(得分:1)

这一行

lines = file.read().split("\n")

从您的行中移除'\n',因为它会分裂。您分割的字符绝不是结果的一部分。

所以这一行

line = line.replace('-\n','')

找不到要替换的东西。

请改用line = line.rstrip("-"),如果存在'-',则会移除' '-join()

您可以从阅读/关注right end of your string中受益 - 获取有关如何调试自己程序的一些提示。

编辑:

  • 您从-分割线中得到一个'',您需要跟踪def file_string(): with open('speech.txt','r') as file: lines = file.read() return lines.replace('-\n','').replace('\n', ' ') print(file_string()) 上哪些行结束并将其与下一行合并。它更容易简单地做2次替换:
lines = """..."""

来获得你想要的结果。取消注释注释行并删除textColorSecondary

答案 1 :(得分:1)

这会(更新)吗?

import re

def file_string():
    with open('speech.txt','r') as file:
        lines = file.read()
    lstr = re.sub(r'\-[\n]*',r'',lines)
    lstr = re.sub(r'[\n]+',r' ',lstr)
    return lstr

print(file_string())