1

我试图编写一些代码来帮助我重新格式化我的 .txt 文件,以便我可以将其转换为 .csv。但是,.txt 的空格数量不一致,我试图找到一种方法来帮助用逗号替换空格。

我尝试了多种替换方法,但还没有得出结论。我还尝试搜索可以分隔列的字符串文字,但没有找到诸如 \t 之类的字符串。我不担心第一行(列名),因为无论如何我都在重命名它们。文本文件如下所示:

 num1  num2   num3
 2323  33232  323232
 434    4556    3432
 43434 34343  434343
    for line in in_file:
        line1 = line.strip(' ')
        line2 = line1.replace('    ', ',')
        line3 = line2.replace('   ', ',')
        line4 = line3.replace('  ', ',')
        line5 = line4.replace(' ', ',')
        out_file.writelines(line5)

它打印正确,但效率不高,因为它只替换一定数量的空格,如果我得到一个更多的文件,我必须手动添加代码。

4

1 回答 1

0

您可以使用字符串的split方法来执行此操作。

str.split生成字符串中的“单词”列表,没有空格

>>> s = 'This is   a  long   string 1234  '
>>> s.split()
['This', 'is', 'a', 'long', 'string', '1234']

一旦你有了这样一个列表,你就可以使用字符串的join方法来创建一个逗号分隔的字符串:

>>> ','.join(s.split())
'This,is,a,long,string,1234'

但是,使用 Python 的csv模块可能会更好。它将创建一个 csv 文件并自动处理嵌入逗号之类的内容,否则可能会导致问题。

>>> import csv
>>> with open('myfile.txt') as f, open('out.csv', 'w', newline='') as o:
...     writer = csv.writer(o)
...     for line in f:
...         writer.writerow(line.split())
... 
16  
19
15
20
>>> 
$  cat out.csv 
num1,num2,num3
2323,33232,323232
434,4556,3432
43434,34343,434343
于 2019-09-24T18:34:04.633 回答