编辑:整个代码见文章底部
我是新加入这个论坛的,我有一个问题,我将非常感谢任何帮助解决。
情况和目标:
-我有一个字符串列表。每个字符串都是一个单词,例如:['word'、'LINKS'、'QUOTE'…]等等。
-我想在一个新的文本文件中把这个单词(字符串)列表写在单独的行上。
-有人会认为这样做的方法是在列表中的每一项后面附加'\n',但是当我这样做时,在每个列表项之间会有一个空行。为什么?
请看一下这个简单的函数:
def write_new_file(input_list):
with open('TEKST\\TEKST_ny.txt', mode='wt') as output_file:
for linje in input_list:
output_file.write(linje + '\n')
这将生成一个如下所示的文件:
WORD
LINKS
QUOTE
如果删除“\n”,则文件如下所示:
WORDLINKSQUOTE
相反,文件应该如下所示:
WORD
LINKS
QUOTE
很明显我做错了什么,但是在网上做了很多实验和阅读之后,我似乎没能把事情做好。
任何帮助都将不胜感激,谢谢!
关于write()与writelines()的线程链接响应: Writelines()本身并不能解决这个问题,它产生的结果与write()相同,但没有'\n'。除非在将新行传递给writelines()之前向每个列表项添加新行。但是我们回到第一个选项和空白行…
我尝试在链接线程中使用一个答案,使用“\n”.Co(),然后写(),但我仍然得到空行。
归根结底是这样的:出于某种原因,我为每个'\n'获得两个换行符,不管我如何使用它。我正在用.strip()'来确定换行符的列表项,如果没有nl,任何东西都只是一大块文本。
关于使用另一个编辑器:我尝试在windows记事本和notepad++中打开txt文件。为什么这些程序不能正确显示?
编辑:这是整个代码。抱歉,挪威人的名字。这个程序的目的是读取和清理一个文本文件,并首先将单词作为一个列表返回,最后作为一个新文件返回,每一个单词放在一个新行上。文本文件是一个拼字列表,所以它相当大(9MB或其他)。附言:我不提倡拼字作弊,这只是一个编程练习:)
def renskriv(opprinnelig_ord):
nytt_ord = ''
for bokstav in opprinnelig_ord:
if bokstav.isupper() == True:
nytt_ord = nytt_ord + bokstav
return nytt_ord
def skriv_ny_fil(ny_liste):
with open('NSF\\NSF_ny.txt', 'w') as f:
for linje in ny_liste:
f.write(linje + '\n')
def behandle_kildefil():
innfil = open('NSF\\NSF_full.txt', 'r')
f = innfil.read()
kildeliste = f.split()
ny_liste = []
for item in kildeliste:
nytt_ord = renskriv(item)
nytt_ord = nytt_ord.strip('\n')
ny_liste.append(nytt_ord)
skriv_ny_fil(ny_liste)
innfil.close()
def main():
behandle_kildefil()
if __name__ == '__main__':
main()
您在注释中说过,python正在为您编写的每个换行符(
'\n'
)编写两个回车符('\r'
)。python将每个换行符替换为两个回车符有点奇怪,但这是以文本模式打开文件的一个特性(通常转换为更有用的内容)。如果改为以二进制模式打开文件,则不会执行此转换,文件应按您的意愿在记事本++中显示。注意。如果需要ASCII范围以外的字符,使用二进制模式可能会导致问题——ASCII基本上只是拉丁字母(没有重音符号)、数字和一些符号。对于python 2,请尝试:
Python 3会更复杂一些。对于希望编写的每个字符串文本,必须在其前面加上
b
(对于二进制)。对于无法立即访问或不希望更改为二进制字符串的每个字符串,必须使用字符串上的encode()
方法对其进行编码。例如我认为您的行中一定有一些“\n”,请尝试跳过空行。 我建议你用这个密码。
相关问题 更多 >
编程相关推荐