【问题标题】:Python:Replace tab in double quotesPython:用双引号替换选项卡
【发布时间】:2016-07-25 20:33:22
【问题描述】:

嗨,我有一行我想用双引号替换制表符。我为此编写了脚本,但它没有按我的意愿工作。 我的线路:

Q3U962  Mus musculus    MRMP-mouse  Optimization    "MRMP-mouse "

我的脚本:

    for repline in reppepdata:
    findtorep=re.findall(r"['\"](.*?)['\"]", repline)
    if len(findtorep) >0:
        for repitem in findtorep:
            repchar =repitem
            repchar=repchar.replace('\t', '')

我的输出应该是:

Q3U962  Mus musculus    MRMP-mouse  Optimization    "MRMP-mouse"

但我是这样的:

Q3U962  Mus musculus    MRMP-mouseOptimization  "MRMP-mouse"

单词在这里用制表符分隔。

Q3U962\tMus musculus\tMRMP-mouse\tOptimization \t"MRMP-mouse\t"

有人知道怎么做吗?

【问题讨论】:

  • 你的字符串可以有转义引号或任何转义序列吗?如果不能有转义序列,答案就很清楚了。
  • 只是猜测 - 试试:r'\t' ?
  • @simplynail 它不工作
  • @WiktorStribiżew 抱歉,转义引号是什么意思?
  • 您的(文字)输入能否看起来像Q3U962 Mus\\ musculus\" MRMP-mouseOptimization "MRMP- \"mouse\""(其中\\ 代表文字反斜杠,\" 代表字段内的引号)?或者,也许 "" 可以代表文字 "

标签: python regex replace


【解决方案1】:

注意:此答案假定(它是confirmed by OP)输入中没有转义的引号/序列。

您可以使用简单的"[^"]+" 正则表达式匹配引用的字符串,该正则表达式匹配"、除"" 之外的1+ 个字符,并替换lambda 中的制表符:

import re
s = 'Q3U96  Mus musculu MRMP-mous   Optimizatio "MRMP-mouse "'
res = re.sub(r'"[^"]+"', lambda m: m.group(0).replace("\t", ""), s)
print(res)

Python demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多