【发布时间】:2019-12-04 19:14:12
【问题描述】:
我有一个包含行和列的大文本文件。在文件中的所有字符串/数据之间,有一个双空格。但是,为了使我的特定代码正常工作,我需要双空格仅在某些行中成为单空格。这些行都以相同的字符串开头。
我试过了:
with open(outfile) as f3, open(outfile2,'w') as f4:
for line in f3:
line = line.strip()
if "SAMPLE" in line:
" ".join(line.split())
if 'xyz' not in line and len(line) >=46:
f4.write(line+'\n')
我试过了:
import re
with open(outfile) as f3, open(outfile2,'w') as f4:
for line in f3:
if "SAMPLE" in line:
re.sub("\s\s+" , " ", line)
if 'xyz' not in line and len(line) >=46:
f4.write(line)
都不行。第二个 if 语句删除一些我不想要的行,这样就不会消失(这按预期工作)。但是,文本文件中所有数据之间的双倍间距仍然存在。如何使文件中包含“SAMPLE”的行用单个空格替换行中单词之间的双空格?
【问题讨论】:
-
或许使用
if "SAMPLE" in line: line.replace(" "," ")(双倍空格,单倍空格)。现在你被一个空格分割,所以返回的数组的元素是在有双空格的点上的空格。 -
re.sub("\s\s+" , " ", line)和".join(line.split())返回一个新字符串,但您没有将它分配给任何变量,因此它会立即被丢弃。将line =" ".join(line.split())或line = re.sub("\s\s+" , " ", line)放在前面。 -
这些都不起作用。第二个 if 语句似乎覆盖了它,因为它也被称为“行”。我需要第二个 if 语句。
-
在没有第二个的情况下尝试第一个 if 语句(只是为了看看它是否有效)只会写入包含“SAMPLE”字符串的行。我需要文件中的所有数据(包括不包含该字符串的行)仍然写入输出文件。
标签: python regex split whitespace removing-whitespace