缩写和没有空格的文本如何拆分

2024-10-01 19:29:20 发布

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

我有一个键、值对的列表

lst = [
  ('AAI', 'AirportAuthorityofIndia'),
  ('AAO', 'AssistantAccountsOfficer'),
  ('AB', 'AutonomousBodies'),
  ('ABA', 'AntiBoostMissile'),
  ('ABC', 'AuditBureauofCirculation'),
  ('ABM', 'AntiBallisticMissile'),
  ('ABVP', 'AkhilBharatiyaVidyarthiParishad'),
  ('AC', 'AssistantCollector'),
  ('AC', 'AirConditioner'),
  ('ACL', 'AccessControlList'),
  ('ACT', 'AssociationofComputerTechnology')]

我试图做的是在值中的单词之间添加空格。例如:

我需要分开:

('AAI', 'AirportAuthorityofIndia')变成('AAI', 'Airport Authority of India')

('ACT', 'AssociationofComputerTechnology')变成('ACT', 'Association of Computer Technology')

如果只有大写字母,我可以用正则表达式

[(abbr, re.sub(r'([a-z])(?=[A-Z])', r'\1 ', long)) for abbr, long in lst]

我得到

[('AAI', 'Airport Authorityof India')....etc

如何在小写字母之间添加空格

或者我可以用其他方法来做这件事吗


Tags: of列表actaclong空格abbrlst
2条回答

虽然远非理想的解决方案。

  • 不使用缩写
  • 基于此SO answer here使用他的infer_spaces(s)函数
    • 它使用一个单词词典文件

在您的例子中,您必须包括印度本地单词,如AkhilBharatiyaVidyarthiParishad,并将其扩展到您的自定义单词词典文件,以使其完全通用。我就是这样吼叫的

    lst = [
      ('AAI', 'AirportAuthorityofIndia'),
      ('AAO', 'AssistantAccountsOfficer'),
       ...
    ]

    for (abbr, long) in lst:
        print(infer_spaces(long.lower()).title())

产出:

Airport Authority Of India
Assistant Accounts Officer
Autonomous Bodies
Anti Boost Missile
Audit Bureau Of Circulation
Anti Ballistic Missile
Akhil Bharatiya Vidyarthi Parishad
Assistant Collector
Air Conditioner
Access Control List
Association Of Computer Technology

我制作了如下代码。我希望这能帮助你

[A-Z]{1}-大写字母只出现一次,后跟一个或多个小写字母[A-Z]+

lst = [
('AAI', 'AirportAuthorityofIndia'),
('AAO', 'AssistantAccountsOfficer'),
('AB', 'AutonomousBodies'),
('ABA', 'AntiBoostMissile'),
('ABC', 'AuditBureauofCirculation'),
('ABM', 'AntiBallisticMissile'),
('ABVP', 'AkhilBharatiyaVidyarthiParishad'),
('AC', 'AssistantCollector'),
('AC', 'AirConditioner'),
('ACL', 'AccessControlList'),
('ACT', 'AssociationofComputerTechnology')]
for item in lst:
    result = re.findall(r'[A-Z]{1}[a-z]+', item[1]) 
    print(item[0],","," ".join(result))

相关问题 更多 >

    热门问题