Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Regex_Pandas - Fatal编程技术网

Python 熊猫-用大写字母替换字符串中的一个字母 我有一个栏目,有几个名字需要大写,比如麦吉尔到麦吉尔,麦克尼尔到麦克尼尔,奥唐奈到奥唐奈等等。

Python 熊猫-用大写字母替换字符串中的一个字母 我有一个栏目,有几个名字需要大写,比如麦吉尔到麦吉尔,麦克尼尔到麦克尼尔,奥唐奈到奥唐奈等等。,python,regex,pandas,Python,Regex,Pandas,我知道一些文本编辑器可以通过使用\U在捕获的组前面加上前缀来实现这一点,但这在熊猫中不起作用 这是我试过的。这可能吗 import pandas as pd names = pd.Series(["Mcgill", "Mcneill", "O'donnell", "Mctavish"]) names.replace(r'\bMc([a-z])', r'Mc\U$1', inplace=True) 您可以将apply()与re.sub()结合使用: 将熊猫作为pd、re导入 名称=pd.系列

我知道一些文本编辑器可以通过使用
\U
在捕获的组前面加上前缀来实现这一点,但这在熊猫中不起作用

这是我试过的。这可能吗

import pandas as pd
names =  pd.Series(["Mcgill", "Mcneill", "O'donnell", "Mctavish"])

names.replace(r'\bMc([a-z])', r'Mc\U$1', inplace=True)
您可以将
apply()
re.sub()
结合使用:

将熊猫作为pd、re导入
名称=pd.系列([“麦吉尔”、“麦克尼尔”、“奥唐纳”、“麦克塔维什”])
def大写(名称):
rx=重新编译(r’(?:)?
import pandas as pd, re
names = pd.Series(["Mcgill", "Mcneill", "O'donnell", "Mctavish"])

def capitalize(name):
    rx = re.compile(r'(?:(?<=Mc)|(?<=O\'))([a-z])')

    def repl(m):
        char = m.group(1)
        return char.upper()

    return rx.sub(repl,name)

names = names.apply(capitalize)  
# 0       McGill
# 1      McNeill
# 2    O'Donnell
# 3     McTavish