Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中向特定字符串中添加空格_Python - Fatal编程技术网

在python中向特定字符串中添加空格

在python中向特定字符串中添加空格,python,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 delimit

我有如下数据:

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.
我需要让它看起来像这样:

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]')
但这不是我的事。我错过了什么?我只需要在文本字符、逗号和文本字符紧挨着的地方更改名称。列表中的其他名称是正确的,不需要更改。

不使用正则表达式。你得用这个

但由于您只是将逗号替换为逗号和空格,因此这里实际上不需要正则表达式:

s = '''SMITH,JOHN
JONES,TOMMY
etc.'''

s = s.replace(',', ', ')

print(s)
# SMITH, JOHN
# JONES, TOMMY
# etc.
我只需要替换紧跟在大写文本字符前面和后面的逗号

那么您可能还是希望使用正则表达式。为此,您必须使用:

import re
s = 'FOO, SMITH,JOHN'

s = re.sub('([A-Z]),([A-Z])', r'\1, \2', s)
print(s)
# FOO, SMITH, JOHN
s = 'FOO, SMITH,JOHN'

s = re.sub('(?<=[A-Z]),(?=[A-Z])', ', ', s)
print(s)
# FOO, SMITH, JOHN
它使用引用将这两个字符放在逗号周围。您还可以为此使用lookbehinds和lookaheads:

import re
s = 'FOO, SMITH,JOHN'

s = re.sub('([A-Z]),([A-Z])', r'\1, \2', s)
print(s)
# FOO, SMITH, JOHN
s = 'FOO, SMITH,JOHN'

s = re.sub('(?<=[A-Z]),(?=[A-Z])', ', ', s)
print(s)
# FOO, SMITH, JOHN
s='FOO,SMITH,JOHN'

s=re.sub(“(?
str.replace(“,”,“,”)
?“我错过了什么?”-至少有两件事:1.
str.replace
(顺便说一句,不要命名自己的变量
str
;您可以隐藏内置变量)与正则表达式无关;2.无论如何,这不是编写正则表达式模式和替换的方法。谢谢,但如果我使用您建议的方法,它将替换列表中的所有逗号(名称后还有其他文本)。我只需要替换紧跟在大写文本字符前面并以大写文本字符开头的逗号。然后我建议您查看一下之类的内容。您可以将第一个名称和第二个名称分开捕获组(如果愿意,包括带第一个名称的逗号)在替换中使用这些组。你把它打乱了!非常感谢!