【问题标题】:How to splice a string from file?如何拼接文件中的字符串?
【发布时间】:2021-10-30 07:48:56
【问题描述】:

我需要从文件中读取和复制一个字符串,我将它拆分以删除换行符,但它给了我['variable contents']。当我尝试拼接时,它只会从变量中删除整个字符串。

如果有任何用处,文件中也有整数。 代码如下所示:

with open('myfile.txt', 'r') as file:

    a = int(file.readline())
    b = int(file.readline())
    c = int(file.readline())
    d = (file.read().split())
    e = (file.read().split())
    f = (file.read().split())
    
print('text', f) #This returns ['f contents']

#I've tried splicing

f = f[2:10] #This returns []

#I've tried item.replace

[item.replace("[", "") for item in f] #This returns ['f contents']

【问题讨论】:

  • 你不能对数组做子串。选择一个数组元素作为子字符串。
  • 括号[ ] 不是您的内容f 的一部分,它们只是表示f 是一个列表,因为您已拆分

标签: python string file file-writing


【解决方案1】:

查看myfile.txt 以了解您正在尝试做什么会很有帮助。不过,如果您关注 def,则会发生以下情况:

with open('myfile.txt', 'r') as file:
    d = (file.read().split())
    e = (file.read().split())
    f = (file.read().split())

d 将是读取前 3 行(进入 abc)后文件剩余部分的列表,并由空格分割成一个列表。

e 将是一个空列表(纯[]),因为df.read() 完成了对文件其余部分的读取,而e 没有任何内容。 f.read() 给你一个空字符串('');在末尾添加 .split() 会得到一个空列表 ([])。

f 也将是一个空列表,原因与 e 相同。

对于f = f[2:10] 行,您正在切片一个空列表;这将返回一个空列表。

对于[item.replace("[", "") for item in f] 行,列表f 是空的,因此它没有项目,因此没有可替换的内容。请注意,[] 不是字符串,它只是表示一个空列表。试试type(f)len(f) 来验证这一点。

如果阅读abc后还有内容,会在d中。您应该查看 d 以在文件的前 3 行之后获取您想要的任何内容。

您可能想在文档中查看f.read()f.readline()f.readlines() 之间的区别。

【讨论】:

    【解决方案2】:

    您可以使用以下方式读取该行:

    f.read().splitline()
    

    然后您可以根据需要拆分和转换结果!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2021-06-14
      相关资源
      最近更新 更多