Python从文本文件切片和分割数据

1 投票
2 回答
15624 浏览
提问于 2025-04-17 14:36
def read_slice():

    openfile=open('slicefile1.txt','r')
    #savetofile=open('slicefile2.txt','w')


    lines = openfile.readlines()
    for line in lines:
        line.slice(',')[16].split('\t')
        print(line)

我想要读取和解析的文件(这个词用得对吗?)格式是

['05,21,34,37,38,01,06', '09,16,26,36,39,02,06', '03,10,18,31,37,02,04'].

我想要返回(其实是写入另一个文件)格式是

05,21,34,37,38 tab 01,06
09,16,26,36,39 tab 02,06

我显然很笨,因为我还是搞不懂列表和字符串。这个函数报错说字符串没有切片这个方法。如果可以的话,请帮帮我。

2 个回答

0

这个方法比Martijn的回答稍微复杂一点,但如果将来需要更改格式或分隔符等,它可能会更灵活:

import csv

with open('yourfile') as fin, open('output.csv', 'wb') as fout:
    csvin = csv.reader(fin)
    csvout = csv.writer(fout, delimiter='\t')
    for row in csvin:
        csvout.writerow( [','.join(row[:5], ','.join(row[5:])] )
3

在Python中,字符串的切片就是用一种叫做 [开始:结束:步长] 的方式来处理字符串。 在你的例子中,你可以简单地使用:

'\t'.join((line[:14], line[15:]))

来把这一行分开,然后用一个制表符重新连接起来:

>>> line = '05,21,34,37,38,01,06'
>>> line[:14]
'05,21,34,37,38'
>>> line[15:]
'01,06'
>>> '\t'.join((line[:14], line[15:]))
'05,21,34,37,38\t01,06'

撰写回答