替换列表中的单词,以后将在变量中使用

时间:2018-10-31 21:10:00

标签: python

我有一个当前存储字符串eeb39d3e-dd4f-11e8-acf7-a6389e8e7978的文件 我正试图将其作为变量传递给我的子流程命令。

我当前的代码如下

with open(logfilnavn, 'r') as t:
                test = t.readlines()
                print(test)  

但是这会打印['eeb39d3e-dd4f-11e8-acf7-a6389e8e7978\n'],我不希望将带有 ['\ n'] 的部分传递到我的命令中,因此我试图通过使用删除它们更换。

 with open(logfilnavn, 'r') as t:
            test = t.readlines()
            removestrings = test.replace('[', '').replace('[', '').replace('\\', '').replace("'", '').replace('n', '')
            print(removestrings)    

我得到一个异常值,这样我该如何将它们替换为空,并将其存储为子进程命令的字符串?

  

“列表”对象没有属性“替换”

那么我该如何将其替换为空,并将其存储为我的子流程命令的字符串?

6 个答案:

答案 0 :(得分:1)

readline()返回一个列表。尝试print(test [0] .strip())

答案 1 :(得分:1)

您的test变量是一个列表,因为readlines()返回读取的所有行的列表。

由于您说文件仅包含这一行,因此您可能希望仅在读取的第一行执行替换:

removestrings = test[0].replace('[', '').replace('[', '').replace('\\', '').replace("'", '').replace('n', '')

答案 2 :(得分:1)

您可以读取整个文件并使用str.splitlines分割行:

test = t.read().splitlines()

答案 3 :(得分:1)

哪里出错了...

python中的

file.readlines()返回文件中行的数组(同一变量类型的集合或分组)-python中的数组称为列表。您,这里将列表视为字符串。您必须首先定位其中的字符串,然后应用该仅字符串函数。

但是,在这种情况下,这将无法正常工作,因为您试图更改python解释器显示它的方式以供理解。

其他信息...

在代码中它不是字符串-我们只是不容易理解堆栈,堆和内存地址。下面的示例适用于任意行(但仅会打印第一个元素),您需要更改该行和

可能有用...

您也许可以使变量全局可用(以便程序的其他部分可以读取它们

更多无用的东西

在超出范围之前-这个词用来表示解释器(运行程序的人)认为该变量有用的点-以便可以将其从内存中删除,或者在更大的程序中,只担心变量的局部性,例如当使用for循环时,我经常在没有作用域的情况下使用它,因此整个项目中的每个变量都需要使用不同的名称。但是作用域会变得专门化(这意味着,如果作用域包含对变量的重新声明,则该作用域将失败,因为它已经被视为一个变量。一种易于理解的方法可能是将它们视为分支以及技巧之间的联系分支。它们不随变量而变化。

解决方案?

例如:

with open(logfilenavn, 'r') as file:
  lines = file.readlines() # creates a list
  # an in-line for loop that goes through each item and takes off the last character: \n - the newline character
  #this will work with any number of lines
  strippedLines = [line[:-1] for line in lines]
  #or
  strippedLines = [line.replace('\n', '') for line in lines]
  #you can now print the string stored within the list
  print(strippedLines[0]) # this prints the first element in the list

我希望这对您有帮助!

答案 4 :(得分:0)

由于readlines返回了列表对象,所以您得到错误。由于您在评论中提到文件中只有一行,因此最好使用readline()

line = "" # so you can use it as a variable outside `with` scope,
with open("logfilnavn", 'r') as t:
    line = t.readline()
    print(line)

# output,
eeb39d3e-dd4f-11e8-acf7-a6389e8e7978

答案 5 :(得分:0)

readlines将返回行列表,并且您不能将replace用于列表。

如果您真的想使用readlines,则应该知道它不会从末尾删除换行符,您必须自己动手。

lines = [line.rstrip('\n') for line in t.readlines()]

但是,仍然可以在每行末尾自己删除换行符之后,将获得一个行列表。从这个问题来看,您只有一行,您只能访问第一行lines[0]

或者您可以只保留readlines,而仅使用read,它将从文件中读取所有内容。然后执行rstrip

contents = t.read().rstrip('\n')