所以这段代码意味着从文件中取一行,用一个新的单词/数字替换字符串中的某一行,但它似乎不起作用:(
else:
with open('newfile', 'r+')as myfile:
x=input("what would you like to change: \nname \ncolour \nnumber \nenter option:")
if x == "name":
print("your current name is:")
test_lines = myfile.readlines()
print(test_lines[0])
y=input("change name to:")
content = (y)
myfile.write(str.replace((test_lines[0]), str(content)))
我收到错误消息TypeError:replace()至少需要2个参数(给定1个),我不知道为什么(内容)不被接受作为参数。这也适用于以下代码
if x == "number":
print ("your current fav. number is:")
test_lines = myfile.readlines()
print(test_lines[2])
number=(int(input("times fav number by a number to get your new number \ne.g 5*2 = 10 \nnew number:")))
result = (int(test_lines[2])*(number))
print (result)
myfile.write(str.replace((test_lines[2]), str(result)))
f=open('newfile', 'r')
print("now we will print the file:")
for line in f:
print (line)
f.close
答案 0 :(得分:0)
替换是' str的功能。对象
听起来你想要做的事情(这是猜测不知道你的输入)
test_lines[0].replace(test_lines[0],str(content))
我不确定你在那里尝试用逻辑完成什么。看起来你想完全删除该行并替换它?
我也不确定你要做什么
content = (y)
输入的输出是str(这是你想要的)
修改强>
在您的具体情况下(替换整行)我建议只重新分配列表中的该项目。 e.g。
test_lines[0] = content
要覆盖该文件,您必须将其截断以避免任何竞争条件。所以一旦你在记忆中做了改变,你应该寻求开始,并重写一切。
# Your logic for replacing the line or desired changes
myfile.seek(0)
for l in test_lines:
myfile.write("%s\n" % l)
myfile.truncate()
答案 1 :(得分:0)
试试这个:
test_lines = myfile.readlines()
print(test_lines[0])
y = input("change name to:")
content = str(y)
myfile.write(test_lines[0].replace(test_lines[0], content))
您没有纯粹被称为str
的对象。必须在字符串对象上调用方法replace()
。您可以在引用字符串对象的test_lines[0]
上调用它。
但是,您可能需要更改实际的程序流程。但是,这应该绕过错误。
答案 2 :(得分:0)
您需要将其称为test_lines[0].replace(test_lines[0],str(content))
在翻译处致电help(str.replace)
。
替换(...) S.replace(old,new [,count]) - > STR
返回包含所有子字符串的S副本 老被新的取代。如果可选参数计数是 给定,只替换第一次计数。
无法找到文档。