python 字符串中各单词翻转,保留单词之间空格个数

本文介绍了一种使用C/C++及Python实现字符串翻转的方法,包括整体翻转和单词级翻转,展示了不同语言处理字符串的独特方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    如下字符串:“wo shi   zhong guo ren”, 翻转后期望输出:“ren guo zhong   shi wo”,shi和zhong之间有两个空格,其余单词之间一个空格。

    用C/C++来实现的话,可以让字符串整体翻转成,"ner oug gnohz  ihs ow",然后再将每个单词翻转,结果为“ren guo zhong   shi wo”

    C/C++代码如下:

#include<iostream>
using namespace std; 

void reverse_str(char *pstr)
{
	if(NULL == pstr)
	{
		return;
	}

	char *pstart = pstr, *pcur = pstr, *pend = NULL;

	while (*pcur++ != '\0');
	pend = pcur - 2;  //减1指向字符串结束符,再减1指向字符串结尾

	while (pstart < pend)
	{
		swap(*pstart++, *pend--);
	}

        pcur = pstr;
	pstart = pstr;

	while(*pcur++ != '\0')
	{
		if((*pcur == ' ') || (*pcur == '\0'))
		{
			pend = pcur -1;
			while(pstart < pend)
			{
				swap(*pstart++, *pend--);
			}
		
			pstart = pcur + 1;	
		}
	}

	return;
}

void main()
{
	char str[] = "wo shi   zhong guo ren";
	cout << str << "\n";
	reverse_str(str);
	cout << str << "\n";

	return;
}

结果:

wo shi   zhong guo ren
ren guo zhong   shi wo
请按任意键继续. . .

用python实现的话,考虑将每个单词和空格都存在列表中,然后将列表反转,并组合成一个字符串,如下:

#!/usr/bin/python  
# -*- coding: utf-8 -*-  

import re

str = 'wo shi   zhong guo ren'
str_split = re.split('(\s+)', str)
str_split.reverse()
print "".join(str_split)
    结果: 
ren guo zhong   shi wo
split的规则加括号的话,是将匹配到的规则也保留在列表中, reverse是反转列表,然后用""和join方法将列表连接成字符串。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值