[英]Python Regex Sort and Print into a New Document with line breaks
我正在使用以下代碼:
from__future__import print_function
import re
NDoc = raw_input("Enter name of new document ")+".txt"
log = open(NDoc, 'a')
file = raw_input("Enter a file to be sorted ")
xfile = open(file+".txt")
for line in xfile:
l=line.strip()
n=re.sub("(\B)(?=((MTH|ENG|SCN|HST)[|]))","\n",line)
if len(n) > 0:
nl=split.("\n")
for item in nl:
log.write(item)
使用此代碼,我試圖允許用戶為新文檔創建一個名稱,然后讓該代碼使用該名稱創建文檔,並將排序后的信息打印到其中。 目前,我可以創建一個新文檔並將其寫入,但是數據只是在一個連續的字符串中,而不是在其中包含換行符(\\ n)。 當我打印到命令提示符時,它以單獨的行出現,但是,當我打印到.txt文件時,它不是。
任何幫助將不勝感激,謝謝先進!
編輯:
樣例行如下所示:MTH | lkdhskghgsh | aljfHST | alkjdfakljdfSCN | klahdfkj @ $ fadfklj | afENG | alkfd
我希望它在新文檔中看起來像這樣:
MTH | lkdhskghgsh | aljf
HST | alkjdfakljdf
SCN | klahdfkj @ $ fadfklj | af
ENG | alkfd
但是,當我將其寫入記事本文檔時,它仍然是示例行的形式。 當我打印(項目)時,在命令提示符下,它顯示為位於不同的行上(這是我想要的記事本.txt)。
您可以在log.write(item)后面添加一個換行符。
for line in xfile:
l=line.strip()
n=re.sub("(\B)(?=((MTH|ENG|SCN|HST)[|]))","\n",line)
if len(n) > 0:
nl=split.("\n")
for item in nl:
log.write(item+'\n')
我測試了您的正則表達式,並將“ \\ n”放置在正確的位置,因此您仍然可以保留循環和if語句,僅添加換行符即可。
Input: MTH|lkdhskghgsh|aljfHST|alkjdfakljdfSCN|klahdfkj@$fadfklj|afENG|alkfd
Output (in a test.txt file I made):
MTH|lkdhskghgsh|aljf
HST|alkjdfakljdf
SCN|klahdfkj@$fadfklj|af
ENG|alkfd
確保您的if語句在for循環內而不在外部縮進。 我想這只是您問題中的格式化問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.