我的文件中包含这样的行。
<play locationId="83" touchscreen="false" primary="">
其中一些中有一个整数,其中一些不是。我可以正确搜索整数。
如何搜索缺失的整数? 有些配置看起来像:
<play locationId="" touchscreen="false" primary="">
或
<play locationId=" " touchscreen="false" primary="">
我想取空白点并在其中加一个整数。
这不起作用:
sys.stdout.write(re.sub(r'(locationID=)"', r'\1"' + mynewnumber, line))
更新 这是我的完整代码。我正致力于“其他”工作。声明,但我认为&#39; if&#39;不让我搜索空间并正确替换。
def changeid():
source = "myfile.config"
newtext = str(results[1])
with fileinput.FileInput(source, inplace=True, backup='.bak') as file:
for line in file:
pattern = r'(?<=locationId=").([^"]+)' # find 1 or more digits that come
# after the string locationid
if re.search(pattern, line):
sys.stdout.write(re.sub(pattern, newtext, line)) # adds number after locationid
fileinput.close()
else:
sys.stdout.write(re.sub(r'(locationID=)"', r'\1"' + newtext, line)) # use sys.stdout.write instead of "print"
# using re module to format
# adds a location id number after locationid even if there was no number originally there
fileinput.close()
changeid()
答案 0 :(得分:1)
<space>?
将匹配空格
\d+
将匹配数字序列
所以让我们把它们结合起来:
locationId="(\d+| ?)
或者,我们可以找到任何不是引号的东西:
locationId="[^"]+
把它放在一起:
line = '<play locationId="83" touchscreen="false" primary="">'
sys.stdout.write(re.sub('locationId="[^"]+', 'locationId="{}'.format(mynumber), line))