import csv
import itertools
data = ['chr1\tmatch\t158337\t160567\t.t-t.tfam=LINE;Target=RIL 356 2619;ID=RIL-map20;Order=TE;Class=Unknown;Identity=93.9881;Name=chr1_RIL-Map20']
reader = csv.reader(data, delimiter='\t')
record = [i for i in itertools.chain(*[i for i in
(j for row in reader
for item in row
for j in csv.reader([item], delimiter=';'))])]
print(record)
# ['chr1', 'match', '158337', '160567', '.t-t.tfam=LINE', 'Target=RIL 356 2619', 'ID=RIL-map20', 'Order=TE', 'Class=Unknown', 'Identity=93.9881', 'Name=chr1_RIL-Map20']
将正则表达式模式} 一起使用:
'\t|;'
与^{模式匹配一个制表符或一个分号(这就是
|
的意思),因此输入字符串在这两个字符中的任何一个上被拆分。在另一种方法是使用^{} ,并将
sep
设置为相同的reg ex模式。在正如@mhawke所指出的,我使用}上进行拆分。在
csv
模块的原始解决方案没有满足这一要求,即在\t
和{我喜欢使用
csv
模块,因为它利用了该模块中的所有功能。在更新
现在我花了一点时间来考虑这个问题,我重新编写了它以消除对
^{pr2}$itertools
模块的需要:相关问题 更多 >
编程相关推荐