You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式替换姓名间制表符为单个空格(动态处理列表数据)

Regex Solution for Normalizing Names (Replace Tabs & Ensure Proper Formatting)

Great question! Let's break down how to solve this with regex—we need to handle two key things: replacing tabs (and any extra spaces) with a single space, and ensuring each name component is properly capitalized. Here's a step-by-step solution that works dynamically for any list of names:

Step 1: Normalize Whitespace (Replace Tabs & Multiple Spaces)

First, we'll use regex to collapse any sequence of tabs or spaces into a single space. This ensures consistent spacing between name parts, even if there are mixed tabs/spaces or multiple separators.

import re

# Example input with tab-separated names
raw_name = 'Muh\tkay'

# Replace tabs + multiple spaces with a single space; strip leading/trailing whitespace
normalized_space = re.sub(r'[\t\s]+', ' ', raw_name).strip()
print(normalized_space)  # Output: 'Muh kay'

Regex Breakdown:

  • [\t\s]+: Matches one or more (+) tabs (\t) or whitespace characters (\s, which includes spaces, newlines, etc.)
  • .strip(): Optional but helpful to clean up any accidental leading/trailing whitespace

Step 2: Capitalize Each Name Component

Next, we'll capitalize the first letter of each word to get proper title case, which fixes examples like 'Muh kay' → 'Muh Kay'.

# Capitalize the first letter of each word
formatted_name = re.sub(r'\b(\w)', lambda match: match.group(1).upper(), normalized_space)
print(formatted_name)  # Output: 'Muh Kay'

Regex Breakdown:

  • \b(\w): Matches a word boundary (\b) followed by a single word character (\w—letters, digits, underscores)
  • The lambda function takes the matched character and converts it to uppercase, ensuring each name part starts with a capital letter

Combine into a Single Step (For Efficiency)

You can combine both operations into one line for cleaner code:

raw_name = 'Muh\tkay'
formatted_name = re.sub(r'\b(\w)', lambda m: m.group(1).upper(), re.sub(r'[\t\s]+', ' ', raw_name).strip())
print(formatted_name)  # Output: 'Muh Kay'

Dynamic Handling for a List of Names

To process a list of names dynamically, loop through each entry and apply the same logic:

name_list = ['John\tdoe', 'jane   smith', 'alice\t\tjones', 'mary-anne\twilson']
formatted_names = []

for name in name_list:
    normalized = re.sub(r'[\t\s]+', ' ', name).strip()
    formatted = re.sub(r'\b(\w)', lambda m: m.group(1).upper(), normalized)
    formatted_names.append(formatted)

print(formatted_names)
# Output: ['John Doe', 'Jane Smith', 'Alice Jones', 'Mary-Anne Wilson']

This solution handles edge cases like hyphenated names, mixed tabs/spaces, and inconsistent capitalization seamlessly.

内容的提问来源于stack exchange,提问作者user9175260

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:38:44