【问题标题】:Using line.replace twice in the same line在同一行使用 line.replace 两次
【发布时间】:2020-04-06 03:18:33
【问题描述】:

我正在尝试使用 line.replace 以便可以在移动到下一行之前替换同一行中的两个单独的变量。

假设文本文件“file.txt”是:

(1.00)

(2.00)

(3.00)

我想将 ( and ) 替换为 and 每一行的空格。这是我所拥有的。

file=open('file.txt', 'r')
file_1=open('file_1.txt', 'w')

for line in file:
  x=line.replace('(', "")
  file_1.writelines(x)

file_2=open('file_1.txt', 'r')
file_3=open('file_2.txt', 'w')

for line in file_2:
  y=line.replace(')', "")
  file_3.writelines(y)

有没有办法提高效率?

感谢您的帮助,

凯尔

【问题讨论】:

  • 这是效率最低的方式。

标签: python performance


【解决方案1】:

您只需要在第一次调用替换函数后再次调用:

for line in file:
    x=line.replace('(', "")
    x=x.replace(')', "")
    file_1.writelines(x)

或者,您甚至可以在同一行调用两次替换函数:

for line in file:

    x=line.replace('(', "").replace(')', "")

    file_1.writelines(x)

【讨论】:

    【解决方案2】:

    您可以使这变得更简单。正如其他人所说,你可以调用 replace 两次,因为它确实返回一个字符串,所以你可以这样做......

    for line in file:
      x=line.replace('(', "").replace(')', "")
      file_1.writelines(x)
    

    您实际上也不需要 x,因此您可以将它们组合成一行。之所以有效,是因为替换函数不断返回一个字符串。

    for line in file:
      file_1.writelines(line.replace('(', "").replace(')', ""))
    

    现在它是单行 for 循环,我们可以将其简化为列表推导式。制作整个程序

    file=open('file.txt', 'r')
    file_1=open('file_1.txt', 'w')
    [file_1.writelines(line.replace('(', "").replace(')', "")) for line in file]
    

    不要犹豫,问问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多