nil*_*rty 2 python regex string awk sed
我有一个字符串(一个日志行,实际上,包含敏感信息(info)),我想根据字符串中子字符串的索引替换其中的子字符串.子字符串中可以包含多个单词,但根据要求,它必须被视为单个子字符串.
细节:
所以,这是我的字符串:
[2016-04-25 03:48:34] 123737 error 150531221446 2000 Master dmart 843212 "Tough times"
Run Code Online (Sandbox Code Playgroud)
在这里,我们需要用一些字符串代替"Tough times"这个词,比如"人类种族".以下是必须处理字符串的方式:
[2016-04-25 03:48:34] - >索引0
123737 - >索引1
错误 - >索引2(...等等)
"艰难时期" - >索引8
现在,python程序(我正在研究),将不会有任何关于子字符串的线索,即"艰难时期",它将简单地提供数字'9'(单词的索引,如上所示) ,程序将用结果字符串替换第9个索引中的任何子字符串.类似地,如果程序提供了数字'7',它将用结果字符串替换第7个索引中的任何子字符串.
现在,我尝试过使用正则表达式,sed,awk等,但找不到合适的答案.我找到的最近的解决方案是这个正则表达式.
但它不符合我的要求.
现在,我怀疑我的要求是否荒谬.
让我们从字符串开始:
>>> orig = '[2016-04-25 03:48:34] 123737 error 150531221446 2000 Master dmart 843212 "Tough times"'
Run Code Online (Sandbox Code Playgroud)
接下来,让我们将字符串分成子串:
>>> import re
>>> s = re.findall(r'(\[[^]]*\]|\w+|"[^"]*")', orig)
>>> s
['[2016-04-25 03:48:34]', '123737', 'error', '150531221446', '2000', 'Master', 'dmart', '843212', '"Tough times"']
Run Code Online (Sandbox Code Playgroud)
现在,让我们更改第九个子字符串并重新组合字符串:
>>> s[8] = '"Human race"'
>>> ' '.join(s)
'[2016-04-25 03:48:34] 123737 error 150531221446 2000 Master dmart 843212 "Human race"'
Run Code Online (Sandbox Code Playgroud)
正则表达式允许子字符串匹配以下三种模式中的任何一种:
\[[^]]*\]:以...开头[和结尾的子字符串,]除了之外有任何字符].
\w+:任何一系列"单词"字符.
"[^"]*":双引号字符串.
此方法在字符串中查找匹配的分隔符.分隔符可以是(a)[和],或(b)(和),或(c)"和".分隔符可以按任何顺序排列.找到匹配的分隔符后,字符串被分成子字符串,然后我们可以更改和重新组合.
为了演示,让我们从这个字符串开始:
>>> orig = '[2016-04-25 03:48:34] (info) (info) (info) (info) (info) (info) (info) "Tough times"'
Run Code Online (Sandbox Code Playgroud)
接下来,让我们将其拆分为具有匹配分隔符的组:
>>> import re
>>> s = re.findall(r'(\[[^]]*\]|\([^)]*\)|"[^"]*")', orig)
>>> s
['[2016-04-25 03:48:34]', '(info)', '(info)', '(info)', '(info)', '(info)', '(info)', '(info)', '"Tough times"']
Run Code Online (Sandbox Code Playgroud)
现在,让我们改变第九个字符串并重新组合:
>>> s[8]='"Human Race"'
>>> ' '.join(s)
'[2016-04-25 03:48:34] (info) (info) (info) (info) (info) (info) (info) "Human Race"'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |