将文本文件拆分为列

时间:2014-10-31 02:35:39

标签: python string text split text-files

让我说我有一个文本文件:

  

0100003 01000040100005 01004480100007 01000080100008 00004590100009 01000100100238 01001500100323 01005030100013

我想让程序做的是在计算出15个字符后按下我的电脑上的“ENTER”键。到目前为止,我应该做的是接受一个文本文件,反转输出,并将其添加到原始文本。然后我需要像这样拆分它。我已经完成了反转和添加的代码。 一个人可以

f = open("rrEdges.txt", "rb")

s = f.read()

f.close()

f = open("newtext.txt", "wb")

f.write(s[::-1])

f.close()


with open ("rrEdges.txt", "r") as myfile:
    data=myfile.read().replace('\n', '')



with open ("newtext.txt", "r") as myfile:

    data += myfile.read().replace('\n', '')


temp ="" + data

open("rrEdges.txt","w").close()

text_file = open("rrEdges.txt", "w")

text_file.write(temp)

我不知道如何处理这个问题,但对于一些有经验的用户来说应该非常简单。例如,最终结果如下:

0100003 0100004

0100005 0100448

0100007 0100008

0100008 0000459

0100009 0100010

0100238 0100150

0100323 0100503

0100013

(但行之间没有空行)

更新:我试过这个

with open ("rrEdges.txt", "r") as myfile:

    data=myfile.read().replace('\n', '')

open("rrEdges.txt","w").close()

text_file = open("rrEdges.txt", "w")

string1=data+""

for i in range(len(string1)//15):

    text_file.write(string1[i*15:(i+1)*15])

4 个答案:

答案 0 :(得分:0)

string1="0100003 01000040100005 01004480100007 01000080100008 00004590100009 01000100100238 01001500100323 01005030100013"
for i in range(len(string1)//15):
    print string1[i*15:(i+1)*15]

答案 1 :(得分:0)

您可以使用下面的re.findall

>>> s = "0100003 01000040100005 01004480100007 01000080100008 00004590100009 01000100100238 01001500100323 01005030100013"
>>> m = re.findall(r'.{15}|.+', s)
>>> for i in m:
...     print i
... 
0100003 0100004
0100005 0100448
0100007 0100008
0100008 0000459
0100009 0100010
0100238 0100150
0100323 0100503
0100013

答案 2 :(得分:0)

s="0100003 01000040100005 01004480100007 01000080100008 00004590100009 01000100100238 01001500100323 01005030100013"

print("\n".join([s[i:i+15] for i in range(0,len(s),15)]))

0100003 0100004
0100005 0100448
0100007 0100008
0100008 0000459
0100009 0100010
0100238 0100150
0100323 0100503
0100013

要写入文件,只需使用write:

替换print
with open("out.txt","w") as f:
 f.write("\n".join([s[i:i+15] for i in range(0,len(s),15)]))

输出到文件看起来像:

0100003 0100004
0100005 0100448
0100007 0100008
0100008 0000459
0100009 0100010
0100238 0100150
0100323 0100503
0100013

答案 3 :(得分:0)

添加到Avinash的答案,可以使用re.finditer()而不是re.findall()来循环遍历迭代器对象而不是列表,以便减少制作列表的开销(从性能的角度来看) )