在文件中每行的开头和结尾添加一个字符

问题描述 投票:0回答:4

我有一个文本文件,每一行只包含一个单词。我想通过将一个字符附加到每行中每个单词的开头和结尾来更新文件。这是我的 Python 代码:

appendText='_'
names=open("name.txt",'r')
updatedNames=open("name2.txt",'a')
for name in names:
  updatedNames.write(appendText+name+appendText)
updatedNames.close()

但问题是这段代码将

_
添加到行尾
\n
字符之后。换句话说,输出如下所示:

_Name
_

_Name
随后是
enter
,然后在下一行中还有另一个
_
。我希望两个
_
都在同一行:

_Name_
python readfile writefile
4个回答
2
投票

您可以使用

str.rstrip()
来摆脱它
\n
:

appendText = '_'
with open("name.txt", 'r') as names:
    with open("name2.txt", 'a') as updatedNames:
        for name in names:
            updatedNames.write(appendText + name.rstrip() + appendText + '\n')

并使用上下文管理器打开文本文件。


1
投票

您想要删除换行符然后将其添加回来:

appendText='_'
names=open("name.txt",'r')
updatedNames=open("name2.txt",'a')
for name in names:
  # Python3.5 or earlier:
  # updatedNames.write(appendText + name.rstrip() + appendText + '\n')
  updatedNames.write(f'{appendText}{name.rstrip()}{appendText}\n')
updatedNames.close()

0
投票

你可以试试这个:

append_text = "_"
with open("name.txt") as f:
    buff = []
    for line in f:
        if line.strip():
             buff.append("%s%s%s"% (append_text,line.strip(),append_text))
    updatedNames=open("name2.txt",'w')
    updatedNames.write("\n".join(buff))
    updatedNames.close()

空行将被忽略


0
投票

我会删除 打开文件后自动使用 readlines() :

mylist = names.readlines()
newstring = []
for word in list:
    newstring += appendText+word+appendText+'\n'

然后将其打印到您的文件中

© www.soinside.com 2019 - 2024. All rights reserved.