繁体   English   中英

如何使用python正确读取和修改文件

[英]how to properly read and modify a file using python

我正在尝试从文件中删除所有(非空格)空白字符,并用逗号替换所有空格。 这是我目前的代码:

def file_get_contents(filename):
  with open(filename) as f:
    return f.read()

content = file_get_contents('file.txt')
content = content.split
content = str(content).replace(' ',',')
with open ('file.txt', 'w') as f:
  f.write(content)

当它运行时,它用以下内容替换文件的内容:

<built-in,method,split,of,str,object,at,0x100894200>

您遇到的主要问题是您将方法content.split分配给内容,而不是调用它并分配其返回值。 如果您在该分配后打印出content ,它将是: <built-in method split of str object at 0x100894200>这不是您想要的。 通过添加括号来修复它,使其成为方法的调用,而不仅仅是对它的引用:

content = content.split()

我认为你在解决这个问题之后可能仍有问题。 str.split返回一个列表,然后使用str调整回一个字符串(在尝试用逗号替换空格之前)。 这将给你方括号和引号,你可能不想要,你会得到一堆额外的逗号。 相反,我建议像这样使用str.join方法:

content = ",".join(content) # joins all members of the list with commas

我不确定这是不是你想要的。 使用split将替换文件中的所有换行符,因此您最终会得到一行,其中有许多单词用逗号分隔。

拆分内容时,您忘记调用该功能。 一旦你拆分,它的一个数组,所以你应该循环替换东西。

def file_get_contents(filename):
  with open(filename) as f:
    return f.read()

content = file_get_contents('file.txt')
content = content.split() <- HERE
content = [c.replace(' ',',') for c in content]
content = "".join(content)
with open ('file.txt', 'w') as f:
  f.write(content)

如果你想替换字符我认为你最好使用python的re模块进行正则表达式。 示例代码如下:

import re

def file_get_contents(filename):
  with open(filename) as f:
    return f.read()

if __name__=='__main__':
    content = file_get_contents('file.txt')
    # First replace any spaces with commas, then remove any other whitespace
    new_content = re.sub('\s', '', re.sub(' ', ',', content))
    with open ('new_file.txt', 'w') as f:
      f.write(new_content)

它更简洁,然后尝试分裂所有的时间,并给你一点点灵活性。 还要注意你打开和阅读代码的文件有多大 - 你可能要考虑使用行迭代器或其他东西而不是一次读取所有文件内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM