我使用以下代码:
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)。
答案 0 :(得分:1)
您可以在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循环中缩进,而不是在for循环中。我猜这只是你问题中的格式化问题。