私はそのようなファイルを持っています
301 my name is joe
303 whatsup
306 how are you doing today
308 what happened?
308 going home
309 let's go
ラベル301, 303, 306, 308, 308, 309
をに変換したい1, 2, 3, 4, 4, 5
類似のラベルが同じ番号になるように、これらのラベルの名前を順番に変更するにはどうすればよいですか?
ディクショナリを使用して元のラベルから新しいラベルへのマッピングを保存し、を使用len
して、まだマッピングされていない値にはディクショナリの現在の値を使用しsetdefault
ます。
>>> labels = 301, 303, 306, 308, 308, 309
>>> names = {}
>>> for l in labels:
... names.setdefault(l, len(names)+1)
...
>>> names
{301: 1, 303: 2, 306: 3, 308: 4, 309: 5}
より完全な例:
text = """301 my name is joe
303 whatsup
306 how are you doing today
308 what happened?
308 going home
309 let's go""".splitlines()
import re
names = {}
replacer = lambda x: str(names.setdefault(x.group(), len(names) + 1))
for line in text:
replaced = re.sub(r'^\d+', replacer, line)
print(replaced)
出力:
1 my name is joe
2 whatsup
3 how are you doing today
4 what happened?
4 going home
5 let's go
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加