[英]Adding a space into a certain string in python
我的数据看起来像这样:
SMITH,JOHN, additional data delimited by commas
JONES,TOMMY, additional data delimited by commas
WILLIAMS, BILLY, additional data delimited by commas
etc.
我需要让它看起来像这样:
SMITH, JOHN, additional data delimited by commas
JONES, TOMMY, additional data delimited by commas
WILLIAMS, BILLY, additional data delimited by commas
etc.
注意前两个名字上逗号后面的额外空格。
我想我需要使用正则表达式来实现这一点,但它似乎不起作用。 我试过了:
grantor = grantor.replace(r'[A-Z],[A-Z]', r'[A-Z], [A-Z]')
但它并没有发生在我身上。 我错过了什么? 我只需要改变名称,其中有一个文本字符,一个逗号和一个文本字符紧挨着彼此。 列表中的其他名称是正确的,不需要更改。
str.replace
不使用正则表达式。 你必须使用re
模块 。
但由于您只是用逗号和空格替换逗号,因此您实际上并不需要正则表达式:
s = '''SMITH,JOHN
JONES,TOMMY
etc.'''
s = s.replace(',', ', ')
print(s)
# SMITH, JOHN
# JONES, TOMMY
# etc.
我只需要替换紧接在前面并以大写文本字符开头的逗号。
然后你可能想要使用正则表达式。 你将不得不使用re.sub
:
import re
s = 'FOO, SMITH,JOHN'
s = re.sub('([A-Z]),([A-Z])', r'\1, \2', s)
print(s)
# FOO, SMITH, JOHN
这使用引号将逗号周围的两个字符放入。 您还可以使用lookbehinds和lookaheads:
s = 'FOO, SMITH,JOHN'
s = re.sub('(?<=[A-Z]),(?=[A-Z])', ', ', s)
print(s)
# FOO, SMITH, JOHN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.