【问题标题】:Trying to convert Sed command to Python re.sub试图将 Sed 命令转换为 Python re.sub
【发布时间】:2017-09-06 04:33:18
【问题描述】:

我正在尝试将以下 Sed 命令转换为 python re.sub。 Sed 命令基本上是从 json 字符串中提取 access_token 值。

finalString=$(echo $initialString |  sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/')

我的 Python 代码,我被困在替换 \1 部分。我必须用值替换整个字符串

access_token = re.sub('^.*"access_token":"\([^"]*\)".*$',r'\1',initialString)
print access_token

我的工作回显语句如下,当我运行它时,我得到了 access_token 值。例如:如果initialString ='{"access_token":"xyz"}' 输出将是xyz

echo initialString | sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/'

【问题讨论】:

  • 什么是initialString?什么正在发生或没有发生,让您提出这个问题?

标签: python regex sed


【解决方案1】:

一般来说,您应该制定一条规则,在 Python 中始终使用原始字符串作为正则表达式。 (具体来说,这并不重要。但这是一个很好的经验法则。)

试试这个:

access_token = re.sub(r'^.*"access_token":"([^"]*)".*$', r'\1', initialString)

【讨论】:

  • 这是我拥有的工作回声功能echo inputString | sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/'
  • 成功了。我的错我传递了错误的输入字符串。感谢您的回答。
【解决方案2】:

我正在假设您的 intialString 类似于:"other":"json","access_token":"(1234)","more":"json"

access_token = re.sub(r'^.*"access_token":"\(([^\)]*)\)".*$',r'\1',initialString)

我注意到的问题是,您实际上从未捕获任何要使用 \1 引用的字符。

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2023-01-17
    相关资源
    最近更新 更多