Python 删除分隔符
我有一个这样的文件:Python 删除分隔符,python,perl,shell,Python,Perl,Shell,我有一个这样的文件: ('chr1', '1499102', '1500297') ('chr1', '1811177', '1812131') ('chr1', '2312420', '2313646') ('chr1', '6683999', '6684724') chr1 (tab) 1499102 (tab) 1500297 N行数 我想这样打印: ('chr1', '1499102', '1500297') ('chr1', '1811177', '1812131') ('chr1
('chr1', '1499102', '1500297')
('chr1', '1811177', '1812131')
('chr1', '2312420', '2313646')
('chr1', '6683999', '6684724')
chr1 (tab) 1499102 (tab) 1500297
N行数
我想这样打印:
('chr1', '1499102', '1500297')
('chr1', '1811177', '1812131')
('chr1', '2312420', '2313646')
('chr1', '6683999', '6684724')
chr1 (tab) 1499102 (tab) 1500297
任何一个线性shell或python或perl。使用python:
for line in open('filename'): print('%s\t%s\t%s'%(eval(line)))
(当然,您需要将这一行python脚本传递给python解释器:python-c“…”
)
eval()
函数不安全,如果要通过它处理未经验证的用户输入,则应将其视为“邪恶”。如果此功能对您构成真正的威胁,您可以使用此版本,该版本的输入限制更大:
import ast
for line in open('filename'):
print('%s\t%s\t%s'%(ast.literal_eval(line)))
(ast.literal\u eval()的文档是否也适用于sed/awk
awk '{print $1"\t"$2"\t"$3}' your_file_with_stuff_in_it | sed "s/[')(,]//g"
这里有一行^_^
cat file.txt | perl -ni -e "printf qq{%s\t%s\t%s\n}, m/'([^']+)'/g;"
你为我做了这个把戏
perl -nE '$,="\t"; say eval' file.txt
使用perl的输出记录分隔符,
$,
提供选项卡eval
应该可以安全地用于单引号字符串,并且可能是最好的选择 到目前为止,您有什么?如果您使用了sed
,为什么不一直使用呢sed-e“s/”,“/\t/”-e“s/^\\(“/”-e“s/“\\)$/“你的文件中有东西”\u it
很高兴知道eval的确切功能(提示:它不是很安全)@rplnt:是的,我知道eval()根本不安全。OP要求使用一行程序,这是最简单的一行程序,非常适合一次性处理的需要。但是,我将编辑代码以包含一个更安全的版本…将每一行作为有效的Perl代码进行漂亮而巧妙的评估。
awk -F "'" 'BEGIN {OFS="\t"} {print $2, $4, $6}' FILE