[英]Reverse the 4 last characters from each line of a text file in Python 3
我正在嘗試從行首的文本文件的每一行的每一端移動最后 4 個字符。
例如我有以下行:6c6d6e6f707172737475767778797a7b10050
我希望最后 4 位數字位於該行的前面,所以我有以下代碼來做到這一點:
import sys
import re
import os
def rearrange(word):
if word.endswith('0'):
word = word[-4] + word[-3] + word[-2] + word[-1] + word[:-4]
print(word)
return word
rearrange('6c6d6e6f707172737475767778797a7b10050')
我得到以下 output,因此到目前為止一切順利,它可以工作:
00506c6d6e6f707172737475767778797a7b1
但是,當我嘗試對帶有迭代循環的小文件執行此操作時。 假設要讀取的文本文件包含以下幾行:
6c6d6e6f707172737475767778797a7b10050
8d6d6e6f707172737475767778797a7b10020
9a6d6e6f707172737475767778797a7b10030
我想以同樣的方式工作,但我無法讓它工作。 有一些明顯的事情正在發生,我看不到它,有人可以發現它並在這里幫助我嗎?
import sys
import re
import os
def rearrange(word):
if word.endswith('0'):
word = word[-4] + word[-3] + word[-2] + word[-1] + word[:-4]
print("print while the routine is executed:")
print(word)
return word
file_write = open (r"reversed-test_text1.txt",'wt')
with open(r"test_text1.txt") as file_read:
for line in file_read:
r = rearrange(str(line))
file_write.write(r)
file_read.close()
file_write.close()
f = open("reversed-test_text1.txt", 'r')
print('Print the 4-char reversed text:')
print(f.read())
當我執行它時,我得到以下不是我想要的:
Print the 4-char reversed text:
6c6d6e6f707172737475767778797a7b10050
8d6d6e6f707172737475767778797a7b10020
9a6d6e6f707172737475767778797a7b10030
有誰知道為什么? 它一定很簡單,但我看不到它(在 Python 中也沒有經歷過)。
我認為問題在於,通過從文件中讀取行,每行末尾都有一個\n
。 通過檢查rearrange
方法中的零,您只是跳過了重新排列。
if word.endswith('0'):
條件不滿足,因為每一行都以換行符( '\n'
)結尾。
要使其按預期工作,您可以按如下方式重寫循環:
with open(r"test_text1.txt") as file_read:
for line in file_read:
r = rearrange(line.rstrip())
file_write.write(r + os.linesep)
.rstrip()
方法從字符串末尾修剪空白字符。
os.linesep
是當前平台的默認行分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.