替换文件中的文本,Python

时间:2014-03-02 20:24:38

标签: python file str-replace

所以这段代码意味着从文件中取一行,用一个新的单词/数字替换字符串中的某一行,但它似乎不起作用:(

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

3 个答案:

答案 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副本      老被新的取代。如果可选参数计数是      给定,只替换第一次计数。

无法找到文档。