让我说我有一个文本文件:
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])
答案 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:
替换printwith 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()
来循环遍历迭代器对象而不是列表,以便减少制作列表的开销(从性能的角度来看) )