V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
miniyao
V2EX  ›  Python

用什么方法,能最快的把一行文字头尾的符号(...text...)去掉?

  •  
  •   miniyao · 2018-10-30 18:33:02 +08:00 · 2190 次点击
    这是一个创建于 2217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文稿中,有很多文字是用括号(...text...)框起来的,括号前面有 # 的那一行,类似这样:

    #(...text...)
    

    须要把 # 连()一起剥去,剩下:

    ...text...
    

    没有 # 开头的那一行,括号(...text...)继续保留不动。

    20 条回复    2018-11-05 17:02:53 +08:00
    neoblackcap
        1
    neoblackcap  
       2018-10-30 18:40:42 +08:00 via iPhone
    自己写一个解析器,快速跑一下。
    不用解析的方法,可能会出错
    hqs0417
        2
    hqs0417  
       2018-10-30 19:08:43 +08:00
    全文替换,正则表达式,比如说用 vscode
    ywgx
        3
    ywgx  
       2018-10-30 19:11:06 +08:00 via iPhone
    对 vim 来说 录制个宏,播放即可,估计也就几秒吧
    onionnews
        4
    onionnews  
       2018-10-30 19:16:48 +08:00 via Android
    sublime text 搜索#,选择所有,删除
    onionnews
        5
    onionnews  
       2018-10-30 19:18:31 +08:00 via Android
    审题失败,打扰了😷
    lniwn
        6
    lniwn  
       2018-10-30 19:21:11 +08:00
    任意一个支持正则的编辑器都能做到,楼主有尝试过吗?
    wsh1108
        7
    wsh1108  
       2018-10-30 19:21:53 +08:00 via Android
    随便一个支持正则的编辑器
    onionnews
        8
    onionnews  
       2018-10-30 19:21:58 +08:00 via Android
    应该是搜索#( 然后选择所有,删除,向右移动光标,删除)
    wsh1108
        9
    wsh1108  
       2018-10-30 19:23:31 +08:00 via Android
    @lniwn 尴尬😅,看到你发,我就不回了
    Akkuman
        10
    Akkuman  
       2018-10-30 19:26:01 +08:00 via Android
    notepad++正则替换 \#\((.*)\)替换为$1
    co3site
        11
    co3site  
       2018-10-30 19:28:14 +08:00 via Android
    text.lstrip('#(').ratio(')')
    co3site
        12
    co3site  
       2018-10-30 19:29:06 +08:00 via Android
    @co3site 手机打字,手残了。。。
    text.lstrip('#(').rstrip(')')
    sutra
        13
    sutra  
       2018-10-30 19:30:42 +08:00
    $ cat a
    #(hello)world
    #(he(llo)world
    (hello)world

    $ cat a | sed 's/^#(\(.*\))/\1/'
    helloworld
    he(lloworld
    (hello)world
    sutra
        14
    sutra  
       2018-10-30 19:33:10 +08:00   ❤️ 1
    上面的回复可能审题错误。

    $ cat a
    #hello(hello)world
    #hello(he(llo)world
    (hello)world

    $ cat a | sed 's/^#\(.*\)(\(.*\))/\1\2/'
    hellohelloworld
    hello(helloworld
    (hello)world
    loryyang
        15
    loryyang  
       2018-10-30 19:35:23 +08:00
    解法同 13 楼,注意区分下中英文字符就行。好好学正则啊,非常有用
    ryd994
        16
    ryd994  
       2018-10-31 07:30:19 +08:00 via Android
    就算不用正则,用 Python 也就是一个 for 一个 if 的事………
    TangMonk
        17
    TangMonk  
       2018-10-31 09:32:03 +08:00
    aaaaasam
        18
    aaaaasam  
       2018-11-05 16:56:18 +08:00
    1、vim 打开文件:%s/^\#(\(.*\))$/\1/
    aaaaasam
        19
    aaaaasam  
       2018-11-05 16:57:01 +08:00
    1
    aaaaasam
        20
    aaaaasam  
       2018-11-05 17:02:53 +08:00
    。。。ctrl + 回车不是换行。。。
    1、用 vim 打开文件,然后进入命令模式,输入 %s/^\#(\(.*\))$/\1/ 回车就好了

    2、sed -i '.bak' "s/^#(\(.*\))$/\1/" <filename> ;
    #上面的.bak 因为实在 Mac os 环境下才使用,其他的应该不需要
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:07 · PVG 22:07 · LAX 06:07 · JFK 09:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.