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

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 2148 | 回复: 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] #验证一下数组是否拆分正确
复制代码


论坛徽章:
128
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期: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
发表于 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没关系

论坛徽章:
32
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期: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

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

论坛徽章:
32
荣誉会员
日期:2011-11-23 16:44:17射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期: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分隔符。
比如 # 之类。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

报名链接>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP