我每天都会收到一个文本文件。我需要对文本文件做一些事情。
我需要每181个字符插入换行符。
我需要逐行阅读文本文件并将各行发送到新的文本文件。 这些文件每行可以包含不同的数据类型,这对我的系统来说是不可用的。例如,我明天可能会得到一个包含250行数据的文件,其中包含6种不同的数据类型。数据类型由行的前四个字母确定。我需要读取每一行,如果该行以ABC1开头,则将其发送到文本文件“ABC1.txt”。下一次迭代和以ABC1开头的所有行都需要被加入到相同的“ABC1.txt”文件中。如果该行以“ABC2”开头,则将其发送到文本文件ABC2。
最后我需要使用original_file.txt,并将其拆分为ABC1.txt,ABC2.txt,ABC3.txt,ABC4.txt。
我是编程的新手,我正在摆弄它。目前我可以打开文件并阅读它,然后我可以将其打印到新文件中。我还没有弄清楚如何将行排序到我需要的行中,然后将它们发送到新的文本文件,然后对其他文件类型重复。我已经做了很多谷歌搜索并观看了很多视频,但似乎都没有做我想做的事情,它们都非常通用。
我还想弄清楚如何将这个固定长度的文档转换为csv,但这只是锦上添花。
答案 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: