1

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

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>
4

3 回答 3

4

您遇到的主要问题是您将方法分配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

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

于 2012-10-31T02:52:09.157 回答
0

拆分内容时,忘记调用该函数。此外,一旦你拆分,它就是一个数组,所以你应该循环替换东西。

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)
于 2012-10-31T02:51:56.737 回答
0

如果您正在寻找替换字符,我认为您最好使用 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)

它比一直尝试拆分更简洁,并为您提供更多灵活性。还要注意您使用代码打开和读取的文件有多大 - 您可能需要考虑使用行迭代器或其他东西,而不是一次读取所有文件内容

于 2012-10-31T03:49:54.463 回答