我在文本文件中有一个字符串列表。弦乐是早,晚,太阳,月亮。我想要做的是用另一个字符串替换其中一个字符串。例如,我会输入早上删除并替换下午。当字符串清楚地出现在列表中时,我收到一条错误,上面写着“builtins.ValueError:list.remove(x):x not in list”。
def main():
x = input("Enter a file name: ")
file = open(x , "r+")
y = input("Enter the string you want to replace: ")
z = input("Enter the string you to replace it with: ")
list = file.readlines()
list.remove(y)
list.append(z)
file.write(list)
print(file.read())
main()
如果有更好的方法以另一种方式实现相同的结果,请告诉我。谢谢你的帮助!
答案 0 :(得分:3)
以下是一些想法:
str.replace()函数是替换字符串s.replace(y, z)
的最简单方法。
re.sub()功能可让您搜索模式并替换为字符串:re.sub(y, z, s)
。
fileinput模块允许您就地修改。
这是一种方法:
import fileinput
import re
with fileinput.input(files=('file1.txt', 'file2.txt'), inplace=True) as f:
for line in f:
print( re.sub(y, z, line) )
这是另一个想法:
例如:
import re
with open(filename) as f:
s = f.read()
with open(filename, 'w') as f:
s = re.sub(y, z, s)
f.write(s)
答案 1 :(得分:0)
假设您的txt保存在src.txt
:
morning
night
sun
moon
在Windows中,您可以使用此批处理脚本,保存在replace.bat
:
@echo off
setlocal enabledelayedexpansion
set filename=%1
set oldstr=%2
set newstr=%3
for /f "usebackq" %%i in (%filename%) do (
set str=%%i
set replace=!str:%oldstr%=%newstr%!
echo !replace!
)
用途:
replace.bat src.txt morning afternoon > newsrc.txt
或grepWin
。
使用sed
或gawk
可能更简单。
sed -i "s/morning/afternoon/g" src.txt
答案 2 :(得分:-1)
也许您正在寻找Python replace()方法?
str = file.readlines()
str = str.replace(y, z) #this will replace substring y with z within the parent String str