Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除分隔符_Python_Perl_Shell - Fatal编程技术网

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