忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 2675 | 回复: 12

[文本处理] shell下运行python脚本时怎么传入\t [复制链接]

论坛徽章:
1
黑曼巴
日期:2016-08-17 14:00:26
发表于 2017-12-18 14:32 |显示全部楼层
在命令行模式运行python脚本时需要将'\t',作为参数传入,但是经过我几次试验都不成功
试验过程
  1. #试验用脚本 test.py
  2. import sys
  3. print(sys.argv)
  4. print('a\tb\tc'.split(sys.argv[1]))
复制代码


snipaste20171218_143229.png


有没有人能告知下正确姿势?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2017-12-18 15:15 |显示全部楼层
本帖最后由 yinyuemi 于 2017-12-18 15:17 编辑

回复 1# Zivix0406

python -c 'import sys; print sys.argv; print ("a\tb\tc");print ("a\tb\tc".split(sys.argv[1]))' $'\t'
['-c', '\t']
a       b       c
['a', 'b', 'c']

论坛徽章:
0
发表于 2017-12-18 17:21 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-12-18 17:32 编辑

行不行都跟shell没啥关系,只跟py有关系。

ps命令行大致是:
.\aaa.ps1   "`t"

ps脚本可以是:
  1. $中间有tab = 'a b c'
  2. $数组 = $中间有tab -split $args[0]
  3. $数组[2] #验证一下数组是否拆分正确
复制代码


论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-12-18 19:45 |显示全部楼层
回复 1# Zivix0406

$ python3 t.py "\t"
['a\tb\tc']

$ python3 t.py "\\t"
['a\tb\tc']

$ python t.py $'\t'
['a', 'b', 'c']

$ python3 t.py '        '    # note: ctrl+v  and tab key
['a', 'b', 'c']



论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2017-12-19 10:54 |显示全部楼层
回复 3# 本友会机友会摄友会

在linux系统下运行的命令行,能和shell没关系

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2017-12-19 11:42 |显示全部楼层
其实,我很好奇为啥一定要 '\t'?空格不行?

论坛徽章:
0
发表于 2017-12-19 12:42 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-12-19 18:01 编辑

python t.py $'\t'   ------嗯,看来确实有问题。那么收回我3楼说的话。我重说:
1我也搞不清楚了。要么是shell,要么是py,要么是互操作问题。
2必须加上$的话,是很奇葩的,我赶脚不如ps。经测试,ps你可以传入【"`t"】或【'中间按tab键'】。
而【'`t'】不行
     ---还是ps好啊~~~
--------------------------------------------------
经过我的测试,确实是bash的问题。
测试环境是cenos 7。4 + yum仓库里,需要安装的python3。4  。代码就用楼主贴的。

1 bash + "\t" 不行。
2 powershell(即pwsh)+  "`t" 可以
3 pwsh + `t 可以。即去掉双引号。


众位,可以确定是bash的bug吗?我看行。

论坛徽章:
1
黑曼巴
日期:2016-08-17 14:00:26
发表于 2018-01-03 14:26 |显示全部楼层
回复 4# jason680

很有意思……$'\t' 是什么意思能讲解下,或提供个关键字给我去搜索下行么

论坛徽章:
1
黑曼巴
日期:2016-08-17 14:00:26
发表于 2018-01-03 14:28 |显示全部楼层
回复 6# q1208c

我写了个文本匹配脚本,使用时需要传入一个分隔符参数以便应对各种类型的文件,所以才有了这种需求。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2018-01-06 11:55 |显示全部楼层
回复 10# Zivix0406

个人建议使用非shell分隔符。
比如 # 之类。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP