精华内容
下载资源
问答
  • python处理中文字符串

    千次阅读 2017-07-07 14:46:39
    而适用于英文字符串的方法并不适用于中文字符串,因此需要通过下述的方法来读取中文字符串中的单个汉字字符。 s = '今天天气非常好hhh' for i in s.decode('utf-8'): print i, #结果: # 今 天 天 气 非 常 好 ...

    使用tensorflow做聊天机器人时,处理数据时遇到一个问题,需要统计常用汉字,这样就需要读取中文字符串中的单个汉字并进行统计。而适用于英文字符串的方法并不适用于中文字符串,因此需要通过下述的方法来读取中文字符串中的单个汉字字符。

    s = '今天天气非常好hhh'
    for i in s.decode('utf-8'):
        print i, 
    #结果:
    # 今 天 天 气 非 常 好 h h h

    如果定义字符串时标明为unicode格式,则更简单。

    s = u'今天天气非常好hhh'
    for i in s:
        print i, 
    # 结果同上
    展开全文
  • Pandas中字符串处理

    千次阅读 2021-01-17 18:45:45
    Pandas字符串处理 Series.str字符串方法列表参考文档 文章目录Pandas字符串处理读取数据获取Series的str属性,使用各种字符串处理函数使用str的startswith、contains等得到bool的Series可以做条件查询需要多次str...

    Pandas字符串处理

    在这里插入图片描述
    Series.str字符串方法列表参考文档

    Pandas的字符串处理:

    1. 使用方法:先获取Series的str属性,然后在属性上调用函数;
    2. 只能在字符串列上使用,不能数字列上使用;
    3. Dataframe上没有str属性和处理方法
    4. Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;

    本节演示内容:

    1. 获取Series的str属性,然后使用各种字符串处理函数
    2. 使用str的startswith、contains等bool类Series可以做条件查询
    3. 需要多次str处理的链式操作
    4. 使用正则表达式的处理

    读取数据

    import pandas as pd
    
    
    df = pd.read_csv("data.xlsx")
    df.head()
    
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    0 2018-01-01 3℃ -6℃ 晴~多云 东北风 1-2级 59 2
    1 2018-01-02 2℃ -5℃ 阴~多云 东北风 1-2级 49 1
    2 2018-01-03 2℃ -5℃ 多云 北风 1-2级 28 1
    3 2018-01-04 0℃ -8℃ 东北风 1-2级 28 1
    4 2018-01-05 3℃ -6℃ 多云~晴 西北风 1-2级 50 1
    df.dtypes
    
    ymd          object
    bWendu       object
    yWendu       object
    tianqi       object
    fengxiang    object
    fengli       object
    aqi           int64
    aqiInfo      object
    aqiLevel      int64
    dtype: object
    

    获取Series的str属性,使用各种字符串处理函数

    df["bWendu"].str
    
    <pandas.core.strings.StringMethods at 0x1af21871808>
    
    # 字符串替换函数
    df["bWendu"].str.replace("℃", "")
    
    0       3
    1       2
    2       2
    3       0
    4       3
           ..
    360    -5
    361    -3
    362    -3
    363    -2
    364    -2
    Name: bWendu, Length: 365, dtype: object
    
    # 判断是不是数字
    df["bWendu"].str.isnumeric()
    
    0      False
    1      False
    2      False
    3      False
    4      False
           ...  
    360    False
    361    False
    362    False
    363    False
    364    False
    Name: bWendu, Length: 365, dtype: bool
    
    df["aqi"].str.len()
    

    使用str的startswith、contains等得到bool的Series可以做条件查询

    condition = df["ymd"].str.startswith("2018-03")
    
    condition
    
    0      False
    1      False
    2      False
    3      False
    4      False
           ...  
    360    False
    361    False
    362    False
    363    False
    364    False
    Name: ymd, Length: 365, dtype: bool
    
    df[condition].head()
    
    ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
    59 2018-03-01 8℃ -3℃ 多云 西南风 1-2级 46 1
    60 2018-03-02 9℃ -1℃ 晴~多云 北风 1-2级 95 2
    61 2018-03-03 13℃ 3℃ 多云~阴 北风 1-2级 214 重度污染 5
    62 2018-03-04 7℃ -2℃ 阴~多云 东南风 1-2级 144 轻度污染 3
    63 2018-03-05 8℃ -3℃ 南风 1-2级 94 2

    需要多次str处理的链式操作

    怎样提取201803这样的数字月份?
    1、先将日期2018-03-31替换成20180331的形式
    2、提取月份字符串201803

    df["ymd"].str.replace("-", "")
    
    0      20180101
    1      20180102
    2      20180103
    3      20180104
    4      20180105
             ...   
    360    20181227
    361    20181228
    362    20181229
    363    20181230
    364    20181231
    Name: ymd, Length: 365, dtype: object
    
    # 每次调用函数,都返回一个新Series
    df["ymd"].str.replace("-", "").slice(0, 6)
    

    使用正则表达式的处理

    # 添加新列
    def get_nianyueri(x):
        year,month,day = x["ymd"].split("-")
        return f"{year}年{month}月{day}日"
    df["中文日期"] = df.apply(get_nianyueri, axis=1)
    
    df["中文日期"]
    
    0      2018年01月01日
    1      2018年01月02日
    2      2018年01月03日
    3      2018年01月04日
    4      2018年01月05日
              ...     
    360    2018年12月27日
    361    2018年12月28日
    362    2018年12月29日
    363    2018年12月30日
    364    2018年12月31日
    Name: 中文日期, Length: 365, dtype: object
    

    问题:怎样将“2018年12月31日”中的年、月、日三个中文字符去除?

    # 方法1:链式replace
    df["中文日期"].str.replace("年", "").str.replace("月","").str.replace("日", "")
    
    0      20180101
    1      20180102
    2      20180103
    3      20180104
    4      20180105
             ...   
    360    20181227
    361    20181228
    362    20181229
    363    20181230
    364    20181231
    Name: 中文日期, Length: 365, dtype: object
    

    Series.str默认就开启了正则表达式模式

    # 方法2:正则表达式替换
    df["中文日期"].str.replace("[年月日]", "")
    
    0      20180101
    1      20180102
    2      20180103
    3      20180104
    4      20180105
             ...   
    360    20181227
    361    20181228
    362    20181229
    363    20181230
    364    20181231
    Name: 中文日期, Length: 365, dtype: object
    
    展开全文
  • [C语言]字符串处理 - 以指定的字符串分割字符串(支持中文字符)  函数StringSplit(分割字符串到一个字符串数组中,其中该数组第0位为分割后字符串的个数)  函数StringSplit_Struct(以定义一个新结构的方式来...

    [C语言]字符串处理 - 以指定的字符串分割字符串(支持中文字符)

     函数StringSplit(分割字符串到一个字符串数组中,其中该数组第0位为分割后字符串的个数)
     函数StringSplit_Struct(以定义一个新结构的方式来实现该函数)

    /*C代码如下*/
    #include <stdio.h>

    /*实现方案1*/
    /*分割字符串到一个字符串数组中,其中该数组第一位为分割后的个数*/
    char** StringSplit(const char* string,const char* split)
    {
          char** result;
          /*首先分配一个char*的内存,然后再动态分配剩下的内存*/
          result = (char * * )malloc(sizeof(char *)*1);
          memset(result,0,sizeof(char *)*1);
          /*定义一个遍历用的指针和一个寻找位置用的指针*/
          char* p = string;
          char* pos = string;
          /*无论是否存在该分割串,绝对都会分割到一个字符串*/
          int count = 1;
          while(*p != '\0')
          {
              char* temp;
              char* tt;
              /*查找该字符串*/
              pos = strstr(p,split);
              /*结果为0说明剩下的字符串中没有该字符了*/
              if(pos == 0)
              {
                result = (char * * )realloc(result,sizeof(char *)*(count+2));
                result[0] = count;
                result[count] = p;
                result[count+1] = NULL;
                return result;
              }
              /*分配临时字符串空间*/
              temp = (char * )malloc(sizeof(char)*(pos - p+1));
              memset(temp,0,sizeof(char)*(pos - p+1));
              /*设置头指针,以便赋值时使用*/
              tt = temp;
              while(p<=pos)
              {
                *temp++ = *p++;
              }
              /*将字符串结尾置零*/
              *--temp = '\0';
              result = (char * * )realloc(result,sizeof(char *)*(count+1));
              result[0] = count;
              result[count] = tt;
              count++;
              /*设置下一次遍历时的指针(重要)。当split长度大于1时,不这样设置会多赋值不必要的字符串*/
              p +=strlen(split)-1;
          }
          return result;
    }
    /*实现方案2*/
    /*为方便计数定义的结构,字符串数组从0开始赋值*/
    typedef struct{
          int number;         /*分割的字符串个数*/
          char** string;         /*字符串数组*/
    }StringTab;
    /*分割字符串到一个字符串数组中*/
    StringTab StringSplit_Struct(const char* string,const char* split)
    {
          StringTab result;
          /*首先分配一个char*的内存,然后再动态分配剩下的内存*/
          result.string = (char * * )malloc(sizeof(char *)*1);
          memset(result.string,0,sizeof(char *)*1);
          /*无论是否存在该分割串,绝对都会分割到一个字符串*/
          result.number = 0;
          /*定义一个遍历用的指针和一个寻找位置用的指针*/
          char* p = string;
          char* pos = string;
          while(*p != '\0')
          {
             char* temp;
             char* tt;
             /*查找该字符串*/
             pos = strstr(p,split);
             /*结果为0说明剩下的字符串中没有该字符了*/
             if(pos == 0)
             {
               result.string = (char * * )realloc(result.string,sizeof(char *)*(result.number+1));
               result.string[result.number] = p;
               return result;
             }
             /*分配临时字符串空间*/
             temp = (char * )malloc(sizeof(char)*(pos - p+1));
             memset(temp,0,sizeof(char)*(pos - p+1));
             /*设置头指针,以便赋值时使用*/
             tt = temp;
             while(p<=pos)
             {
               *temp++ = *p++;
             }
             /*将字符串结尾置零*/
             *--temp = '\0';
             result.string = (char * * )realloc(result.string,sizeof(char *)*(result.number+1));
             result.string[result.number] = tt;
             /*计数器加一*/
             result.number++;
             /*设置下一次遍历时的指针(重要)。当split长度大于1时,不这样设置会多赋值不必要的字符串*/
             p +=strlen(split)-1;
          }
          return result;
    }

    int main()
    {
          /*进行测试*/
          /*方案1测试*/
          char** array;
          array = StringSplit("a/aaa//哈aa","aaa");
          int i ;
          for(i=1;i<=(int)array[0];i++)
          {
              printf("Num:%d I:%d: Value: %s\n",array[0],i,array[i]);
          }
        
          array = StringSplit("a/aa哈a//哈aa","哈");
          for(i=1;i<=(int)array[0];i++)
          {
              printf("Num:%d I:%d: Value: %s\n",array[0],i,array[i]);
          }

          /*方案2测试*/
          StringTab array2;
          array2 = StringSplit_Struct("a/aaa//哈aa","aaa");
          for(i=0;i<=array2.number;i++)
          {
             printf("Num:%d I:%d: Value: %s\n",array2.number,i,array2.string[i]);
          }
          array2 = StringSplit_Struct("a/aa哈a//哈aa","哈");
          for(i=0;i<=array2.number;i++)
          {
             printf("Num:%d I:%d: Value: %s\n",array2.number,i,array2.string[i]);
          }

          return 0;
    }

     

    http://hi.baidu.com/nivrrex/item/8f0c8f175a9ce5721009b5a1

    展开全文
  • 字符串处理算法(二)逐个打印中文字符串

    千次阅读 多人点赞 2013-09-24 00:04:54
    如上两种,怎么才能把字符串中字符一个一个显示出来? 程序实现如下: int main() { char *str = "青年杂志(上半年)"; char str1[] = "一份耕耘一份收获"; int nLen = strlen(str); char Temp...

    根据帖子:

    http://bbs.csdn.net/topics/390598291里的要求:

    C/C++ code
    ?
    1
    2
    char *str = "青年杂志(上半年)";
                      char str[] = "青年杂志(上半年)";


    如上两种,怎么才能把字符串中字符一个一个显示出来?


    程序实现如下:

    int main()
    {
    	char *str = "青年杂志(上半年)";
    	char str1[] = "一份耕耘一份收获";
    	int nLen = strlen(str);
    	char Temp[4];
    
    	for (int i=0; i<nLen; i=i+2)
    	{
    		memcpy(Temp, str+i, 2);
    		Temp[2]='\0';
    
    		cout << Temp;
    	}
    	cout << endl;
    
    	for (int j=0; j<nLen; j=j+2)
    	{
    		memcpy(Temp, str1+j, 2);
    		Temp[2]='\0';
    		
    		cout << Temp;
    	}
    
    	cout << endl;
    
    
    	cout << str << "," << str1 << endl;
    	
    	return 0;
    }


    测试结果:

    青年杂志(上半年)
    一份耕耘一份收获
    青年杂志(上半年),一份耕耘一份收获


    逐个算法还有待于完善,比如中英混合了逐个怎么打印出来呢。待wujunokay后续实现。


    转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/11954917





    展开全文
  • Go 字符串处理

    千次阅读 2019-06-10 23:12:13
    因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。 使用strings.Join()函数 示例: var s []string for i := 0; i <= 9; i++ { s = append(s, strc...
  • HBase处理中文字符串

    千次阅读 2016-07-13 16:07:54
    在设置scan的startRowKey与endRowKey时,经常需要在某个条件字符串后面补充出一个范围。(再比如SingleColumnValueFilter也会用到) 比如:我的条件字符串是“abc”,scan时我需要将下述内容都囊括到我scan的范围...
  • go中文字符串处理

    千次阅读 2018-01-26 23:58:59
    word:= "1234百万红包" wordRune := ([]rune)(word) lenght := len(wordRune) for i := 0; i ; i++ { fmt.Println(string(wordRune[i : i+1])) }
  • c++ 中文字符串处理方法

    万次阅读 2012-01-17 14:42:03
    c++ 中 char*/string 形式的字符串无法正确的对中文字符串进行处理(如 find, strlen, substr 等常规操作) 。 比如当你在char* 中 find 英文逗号时,有可能匹配的不只是逗号,还找到了某个汉
  • [C语言]字符串处理 - 提取字符串指定部分(支持中文字符) 2008-11-5: 增加StringSubU(可处理中文字符串,以前的StringSub遇到中文会取半个字符),为此写了StrLenU和StrSetPosU函数。字符串以1开始计算,如果取的...
  • golang 字符串处理

    千次阅读 2018-12-11 23:26:02
    字符串 golang的字符串是只读的unicode字节序列,Go语言使用UTF-8格式编码Unicode字符,每个...go 语言字符串处理 go语言字符串与python等想象 都是不可变类型,内部指针只想UTF-8字节数组 具有以下类型: 1.默...
  • 处理字符串字符串中的unicode字符转为汉字public class UnicodeUtil { /** * 处理字符串字符串中的unicode字符转为汉字 * @param asciicode * @return */ public static String ascii2native ( String ...
  • python 中文字符串处理-获得子串

    千次阅读 2016-07-20 20:23:58
    由于python的处理是按照编码来处理的...所以会出现中国+乱码,选取字符串子串的操作是对unicode编码的字符串处理的. 计算机内存中使用的编码是unicode,作为中介转化Python的字符串搞清楚了令人头疼的字符编码问题后,
  • 使用Python 的re模块,re模块提供了re.sub用于替换字符串中的匹配项。 1 re.sub(pattern, repl, string, count=0) 参数说明: pattern:正则重的模式字符串 repl:被拿来替换的字符串 string:要被用于替换的...
  • dart字符串处理

    千次阅读 2019-03-20 21:20:00
    1.字符串创建(1)使用单引号,双引号创建字符串(2)使用三个引号或双引号创建多行字符串(3)使用r创建原始raw字符串(转义字符等特殊字符会输出出来,而不会自动被转义)(1)例如:String str1='Hello World';...
  • pandas——字符串处理

    千次阅读 2019-01-23 09:56:20
    在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等这种需求,如果掌握str列内置的方法,处理起来会方便很多。 实操 1....
  • php 字符串处理函数

    千次阅读 2020-08-02 12:11:24
    一、字符串处理 1.使用多参数来输出多个字符串的输出结果与使用字符串连接符“.”的结果完全相同。以下代码是一个使用echo输出多个参数的例子。 <?php echo “test” , “it” ,” “/n” ; echo “test...
  • AWK 字符串处理

    千次阅读 2018-08-25 11:28:02
    字符串处理的另外一个强大的工具是AWK, 与SED不同的是AWK更加擅长对字符串进行切分, 进行列处理。 语法 awk [ -F re] [parameter…] [‘prog’] [-f progfile] 参数说明: -F re:允许awk更改其字段分隔符,...
  • MATLAB中字符串处理

    千次阅读 2019-07-27 17:47:31
    字符串的表示 1)字符串的表示 在MATLAB中,字符串是用单引号括起来的字符序列 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示 建立多行字符串,形成字符串矩阵 字符串的操作 1)字符串的...
  • Perl字符串处理

    万次阅读 2011-09-20 16:50:51
    众所周知Perl处理字符串的功能非常强大,Perl(Practical Extraction and Reporting language)处理格式的功能也非常强大,这里我们就开始学习一些Perl的格式和字符串处理。 熟悉其最强大的三个函数:substr、pack...
  •  截取包含中文字符串处理字符串和字节数) import java.io.UnsupportedEncodingException; public class SplictString { public static void main(String[] args) throws Exception { String string =...
  • Oracle JSON 字符串处理实例

    千次阅读 2018-11-11 05:26:09
    Oracle JSON 字符串处理实例
  • jni的中文字符串处理

    千次阅读 2007-04-12 12:01:00
    几个概念首先要明确: java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节; jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的unicode,一般ascii字符是1字节,中文是3字节...
  • 二、字符串格式处理需要达成一致 演示说明 在C/C++中,字符串是用空字节来终止的,发送时可以使用额外的空字节来发送字符串。例如,下面发送一个6个字节的“Hello”字符串,因为其尾部默认含有一个空字节 zmq_...
  • 去除字符串的空格,根据索引截取字符串字符串分隔方法,只能输入汉字字母空格的正则
  • VB字符串处理函数一览

    万次阅读 2017-10-10 11:49:20
    VB字符串处理函数一览 mid(字符串,从第几个开始,长度) ByRef 在[字符串]中[从第几个开始]取出[长度个字符串]  例如 mid("小欣无敌",1,3) 则返回 "小欣无"  instr(从第几个开始,字符串1,...
  • 【R语言】字符串处理

    万次阅读 多人点赞 2016-07-24 20:35:28
    在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台,虽然文本的处理并不是它的强项, 但是R语言还是包含了些较为常用的字符串处理函数,本文将...
  •  (1)strcmp($str1,$str2) //比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的...
  • jni的中文字符串处理

    千次阅读 2005-08-31 17:20:00
    java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节; jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的unicode,一般ascii字符是1字节,中文是3字节; c/c++使用的是原始...
  • PB字符串处理函数

    千次阅读 2016-04-18 18:25:45
    Fill() 功能建立一个由指定字符串填充的指定长度的字符串。...函数执行成功时返回n个字符的字符串,该字符串以参数chars中的字符串重复填充而成。如果参数chars中的字符个数多于n个,那么使用chars字符串的前

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,426
精华内容 122,570
关键字:

对于中文字符串怎么处理