你如何阅读文本文件,然后用python将该文本文件拆分成多个文本文件?

时间:2014-07-13 14:40:57

标签: python

我每天都会收到一个文本文件。我需要对文本文件做一些事情。

  1. 我需要每181个字符插入换行符。

  2. 我需要逐行阅读文本文件并将各行发送到新的文本文件。 这些文件每行可以包含不同的数据类型,这对我的系统来说是不可用的。例如,我明天可能会得到一个包含250行数据的文件,其中包含6种不同的数据类型。数据类型由行的前四个字母确定。我需要读取每一行,如果该行以ABC1开头,则将其发送到文本文件“ABC1.txt”。下一次迭代和以ABC1开头的所有行都需要被加入到相同的“ABC1.txt”文件中。如果该行以“ABC2”开头,则将其发送到文本文件ABC2。

  3. 最后我需要使用original_file.txt,并将其拆分为ABC1.txt,ABC2.txt,ABC3.txt,ABC4.txt。

    我是编程的新手,我正在摆弄它。目前我可以打开文件并阅读它,然后我可以将其打印到新文件中。我还没有弄清楚如何将行排序到我需要的行中,然后将它们发送到新的文本文件,然后对其他文件类型重复。我已经做了很多谷歌搜索并观看了很多视频,但似乎都没有做我想做的事情,它们都非常通用。

    我还想弄清楚如何将这个固定长度的文档转换为csv,但这只是锦上添花。

2 个答案:

答案 0 :(得分:0)

您需要学习的第一件事是使用Python处理文件。这个链接对初学者来说是一个好的开始:

http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python

csv文件只是一个带有逗号分隔值的文件,应该很容易弄明白你什么时候有一些基本的Python文件处理。在文本编辑器中打开一个csv文件,看看我的意思。

答案 1 :(得分:0)

如果/ elif检查以查看每行开头的内容,请使用a每次使用时附加文件。

with open('original_file.txt', 'r') as infile,open("ABC1.txt","a") as ab1,open("ABC2.txt","a") as ab2,\
    open("ABC3.txt","a") as ab3,open("ABC4.txt","a") as ab4:
        for line in infile:
            if line.startswith("ABC1"):
                ab1.write(line)
            elif line.startswith("ABC2"):
                ab2.write(line)
            elif line.startswith("ABC3"):
                ab3.write(line)
            elif line.startswith("ABC4"):
                ab4.write(line) 

如果你想每181个字符插入一些东西,这应该接近你想要的东西:

def insert_break(s,n, br):
    while s:
        yield "{}{}".format(s[:n],br)
        s = s[n:]
with open('output.txt', 'r') as f,open('updated.txt', 'a') as f1:
    inserted= "".join((insert_break(f.read(),181,"\n")))
    f1.write(inserted)

with open('updated.txt', 'r') as infile,open("ABC1.txt","a") as ab1,open("ABC2.txt","a") as ab2,\
        open("ABC3.txt","a") as ab3,open("ABC4.txt","a") as ab4:
            for line in infile:
                print line.startswith("ABC1"),line
                if line.startswith("ABC1"):
                    ab1.write(line)
                elif line.startswith("ABC2"):
                    ab2.write(line)
                elif line.startswith("ABC3"):
                    ab3.write(line)
                elif line.startswith("ABC4"):
                    ab4.write(line)

如果您想查找字符串中是否存在子字符串,请使用if "your_sub_s" in line: