我想将ns = {'d': 'https://mws.amazonservices.com/Orders/2013-09-01'}
for node in tree.findall('.//d:Order/d:SellerOrderId', ns):
print node.text
替换为171-1322776-9700344
171-4214129-7148305
402-8263846-7042737
402-7017923-9474716
402-9691237-2887553
171-4614227-7597903
403-6729903-2119563
402-2184564-2676353
171-4520392-2088330
402-7986969-8827533
,但我的文件中的字符串除外有一些工具:
NumberInt(1)
到
1
所以你可以看到,我想要替换NumberInt,除了包裹"bz":NumberInt(1), "batch": NumberInt(2), "something": "something else NumberInt(1)"
"bz":NumberInt(1), "batch": NumberInt(2), "something": "something else NumberInt(2)"
"bz":NumberInt(1), "batch": NumberInt(2), "something": "something else NumberInt(3)"
"bz":NumberInt(1), "batch": NumberInt(2), "something": "something else NumberInt(4)"
"bz":NumberInt(1), "batch": NumberInt(2), "something": "something else NumberInt(5)"
或"bz":1, batch: 1, "something": "something else NumberInt(1)"
"bz":1, batch: 1, "something": "something else NumberInt(2)"
"bz":1, batch: 1, "something": "something else NumberInt(3)"
"bz":1, batch: 1, "something": "something else NumberInt(4)"
"bz":1, batch: 1, "something": "something else NumberInt(5)"
答案 0 :(得分:3)
您可以尝试:
:%s/\vNumberInt\((\d+)\)/\1/
使用非常神奇的模式(\v
),对括号中的数字进行分组,并在替换部分中将其用作反向引用(\1
):
它产生:
"bz":1, "something": "something else NumberInt(1)"
"bz":1, "something": "something else NumberInt(2)"
"bz":1, "something": "something else NumberInt(3)"
"bz":1, "something": "something else NumberInt(4)"
"bz":1, "something": "something else NumberInt(5)"
更新:使用其他工具,例如sed:
sed 's/NumberInt(\([0-9]\+\))/\1/' infile
它产生的结果与以前相同。正则表达式类似,但使用[0-9]
因为\d
不兼容sed,并且因为它们并不特殊而逃避parens。
更新2 :请尝试以下操作:
sed 's/\(: *\)NumberInt(\([0-9]\+\))/\1\2/g' infile
它替换了以分号开头的所有NumberInt()
,但它们之间没有双引号。