当一个词在另一个词中但有特殊情况时替换

2024-10-03 09:09:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序在标记位于文件中时将其替换为值。当阅读某一行时,它会被卡住,例如: 1.1.1.1.1.1.1.1.1.1 Token100.1 1.1.1.1.1.1.1Token100a

示例中的两个令牌是令牌100和令牌100a。我需要一种方法,只将Token100替换为它的数据,而不将Token100a替换为Token100的数据。我找不到前后的空间,因为有时候它们在直线中间。任何想法都很感激。谢谢


Tags: 文件数据方法标记程序示例空间直线
2条回答

可以使用带有negative lookahead的正则表达式来确保以下字符不是"a"

>>> import re
>>> test = '1.1.1.1.1.1.1.1.1.1 Token100.1 1.1.1.1.1.1.1Token100a'
>>> re.sub(r'Token100(?!a)', 'data', test)
'1.1.1.1.1.1.1.1.1.1 data.1 1.1.1.1.1.1.1Token100a'

您可以使用正则表达式:

import re
line = "1.1.1.1.1.1.1.1.1.1 Token100.1 1.1.1.1.1.1.1Token100a"

match = re.sub("Token100a", "data", line)
print(match)

产出:

 1.1.1.1.1.1.1.1.1.1 Token100.1 1.1.1.1.1.1.1data

有关regex的更多信息,请参见:

https://www.w3schools.com/python/python_regex.asp

相关问题 更多 >