Regex (Python)识别缺少的字符并替换为NA

Regex (Python)识别缺少的字符并替换为NA,regex,python-2.7,list,Regex,Python 2.7,List,我在上面提供了两个字符串,这不是CSV的输出。目前我正在做的是读取第一个字符串并转换成如下列表 my_string = " Name Last_Name Place" my_string_another = "Aman Raparia India" 以的格式提供输出 my_string = my_string.strip("\r\n") my_string = my_string.split(

我在上面提供了两个字符串,这不是CSV的输出。目前我正在做的是读取第一个字符串并转换成如下列表

my_string = "        Name         Last_Name              Place"
my_string_another = "Aman         Raparia                India"
以的格式提供输出

my_string = my_string.strip("\r\n")
my_string = my_string.split(" ")
my_string[:] = [elem for elem in my_string if elem != ""]
类似地,我这样做是为了生成另一个列表

my_string = ['Name', 'Last_Name', 'Place']
因此,我可以轻松创建dict对象

当my_string_Other缺少以下字段之一时,就会出现问题:-

my_another_string = ["Aman", "Raparia", "India"]
当我使用相同的逻辑将my_字符串转换为它生成的列表时

my_string_another = "Aman                             India"
因此,当我将它们映射到一起时,它将映射到姓氏,而不是位置

是否有办法以以下格式获得输出:-

my_string_another = ["Aman", "India"]
这样,当我映射两个字符串时,它们会正确匹配。

您可以使用:

这大致意味着:捕获三组非空格字符。中间的是可选的

然后,您可以使用列表理解通过NA更改空字符串:

>>> import re
>>> my_string = "        Name         Last_Name              Place"
>>> my_string_another = "Aman         Raparia                India"
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string).groups()
('Name', 'Last_Name', 'Place')
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string_another).groups()
('Aman', 'Raparia', 'India')
>>> my_string_another = "Aman                             India"
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string_another).groups()
('Aman', '', 'India')
您可以使用:

这大致意味着:捕获三组非空格字符。中间的是可选的

然后,您可以使用列表理解通过NA更改空字符串:

>>> import re
>>> my_string = "        Name         Last_Name              Place"
>>> my_string_another = "Aman         Raparia                India"
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string).groups()
('Name', 'Last_Name', 'Place')
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string_another).groups()
('Aman', 'Raparia', 'India')
>>> my_string_another = "Aman                             India"
>>> re.search('(\S+)\s+(\S*)\s+(\S+)',my_string_another).groups()
('Aman', '', 'India')

非常感谢您的回复。非常适合我。非常感谢您的回复。对我来说非常有效。
>>> m = re.search('(\S+)\s+(\S*)\s+(\S+)',my_string_another).groups()
>>> m = [i if i else 'NA' for i in m]
>>> m
['Aman', 'NA', 'India']