61阅读

split分割字符串-python按照多个字符对字符串进行分割的方法

发布时间:2017-10-01 所属栏目:python教程

一 : python按照多个字符对字符串进行分割的方法

这篇文章主要介绍了python按照多个字符对字符串进行分割的方法,涉及Python中正则表达式匹配的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了python按照多个字符对字符串进行分割的方法。分享给大家供大家参考。具体分析如下:

这段python代码通过这规则表达式对字符串进行分割,使用w作为分割符,只要不是字母和数字的就会被分割开来。

?
1 2 3 import re DATA = "Hey, you - what are you doing here! welcome to jb51?" print re.findall(r"[w']+", DATA)

输出结果如下

复制代码 代码如下:['Hey', 'you', 'what', 'are', 'you', 'doing', 'here', 'welcome', 'to', 'jb51'
]

希望本文所述对大家的Python程序设计有所帮助。

二 : vbscript Split函数用法详解(字符串转数组函数)

vbscript Split 函数用法

用法:传回数组 = Split(原始字串, 要找的字串, 拆成几个数组)

描述

返回一个下标从零开始的一维数组,它包含指定数目的子字符串。

语法

Split(expression[, delimiter[, count[, compare]]])

例如用逗号(,)分割字符串为数组

复制代码 代码如下:

str="1,2,3,4"

strarr=split(str,",")

for i=0 to ubound(strarr)

msgbox strarr(i)

next

Split函数语法有如下几部分:

部分 描述

expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。

delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。

count 可选的。要返回的子字符串数,-1表示返回所有的子字符串。

compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。

参数的设置

设置值

compare参数的设置值:

常数 值 描述

vbUseCompareOption -1 用Option Compare语句中的设置值执行比较。

vbBinaryCompare 0 执行二进制比较。

vbTextCompare 1 执行文字比较。

vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。

代码如下:

Private Sub Command1_Click()

Dim MyStr As String

MyStr = "1234567123456712345"

MyStrs = Split(MyStr, "67")

For Each Strs In MyStrs

Print Strs

Next

End Sub

输出结果:"12345"、"12345"、"12345"

代码如下:

'这个VB程序是让求10个学生的考试成绩的平均分..

'比如95 85 70 75 80 90 60 65 95 100

'这10个人的分数的平均分...

Private Sub Form_Load()

Dim A$(), i As Long, intB As String, s As Integer

If Dir("d:\平均分.dat") = vbNullString Then

Open "d:\平均分.dat" For Output As #1

Print #1, "95 85 70 75 80 90 60 65 95 100"

Close #1

End If

Open "d:\平均分.dat" For Input As #1

Input #1, intB

Close #1

A = Split(intB, Space(1), -1, 1)

For i = 0 To UBound(A, 1)

Debug.Print A(i); " ";

s = s + A(i)

Next i

Debug.Print ",10个学生的平均成绩是 :" & s / 10

End Sub

Private Sub command1_Click()

Dim AString As String

Dim r() As String '把变量按照“,”分割出来的数组

Dim rt As String '最终的结果,用换行符代替“,”

Dim C As Integer '这个是循环用的

AString = "高级,中级,低级,先进"

r = Split(AString, ",") '把每个目录都分解出来

For C = 0 To UBound(r) 'C由0开始循环到r数组的最大下标

rt = rt & vbCrLf & vbCrLf & r(C) '把数组的每一个元素都添加到rt,用回车分割

Next C '循环

MsgBox rt '输出

End Sub

Private Sub Form_Load()

Dim strTextDate As String

strTextDate = "2008-12-1 星期一"

MsgBox Format(Split(strTextDate)(0), "yyyy-mm-dd")

End Sub

当小括号中写0时,返回数组中第一个元素,小括号中写1时返回数组中第二个元素。依此类推,用这种写法返回数据时,必须用一个空格把字符串分开,其它字符仅当做一个数据。例:

Private Sub Form_Load()

Dim AString As String

AString = "高级 中级 低级 先进"

MsgBox Split(AString)(0)

MsgBox Split(AString)(1)

MsgBox Split(AString)(2)

MsgBox Split(AString)(3)

End Sub

以下只返回 高级,中级,低级,先进 仅当作一个串,即只能返回Split(AString)(0)的值,其它值都产生下标越界错误。所以用以下方法分解时,只能用一个空格分割,而不能用其它字符分割.

代码如下:

Private Sub Form_Load()

Dim AString As String

AString = "高级,中级,低级,先进"

MsgBox Split(AString)(0)

MsgBox Split(AString)(1)

MsgBox Split(AString)(2)

MsgBox Split(AString)(3)

End Sub

split 命令用途

将文件分割成几段。

语法

要将一个文件分割成包含指定行数的多个文件

split [ -l LineCount ] [ -a SuffixLength ] [ File [ Prefix ] ]

要将一个文件分割成包含指定字节数的多个文件

split -b Number [ k | m ] [ -a SuffixLength ] [ File [ Prefix ] ]

描述

split 命令读取指定文件,以 1000 行大小写在一组输出文件上。第一个输出文件名由指定前缀(缺省值 x)和 aa 后缀组合构成,第二个文件名由前缀和 ab 后缀组合构成,如此按字典顺<img class="img InsertH2" src="../../System/_resource/blank.gif">序一直到 zz(最多 676 个文件)。后缀的字母数及因此的输出名称文件数可用 -a 标志增加。

您指定的 Prefix 不能长于 PATH_MAX - 2 个字节(如果指定了 -a 标志,则不能长于 PATH_MAX - SuffixLength 个字节)。PATH_MAX 变量指定系统的最大路径名的长度( 在 /usr/include/sys/limits.h 文件中定义)。

如果您不指定输入文件或如果您指定 -(减号)文件名,那么 split 命令从标准输入读取文件。

标志

注:-b 和 -l 标志是互斥的。

-a SuffixLength 指定用于形成输出名称文件后缀部分的字母数。字母数确定可能的输出文件名组合数。缺省是两个字母。

-b Number 将文件分割成 Number 变量指定的字节数。将 k(千字节)或 m(兆字节)乘数加到 Number 值的末尾使文件分别分割成 Number*1024 字节或 Number*1,048,576 字节的几个段。

-l LineCount 指定每个输出文件的行数。缺省值是 1000 行。

退出状态

该命令返回以下退出值:

0 命令成功运行。

>0 发生错误。

示例

代码如下:

1. 要将文件分割成 1000 行的段,请输入:

split book

此示例将 book 分割成 1000 行的段,命名为 xaa、 xab、 xac 等等。

2. 要将文件分割成 50 行的段并指定文件名前缀,(www.61k.com)请输入:

split -l 50 book sect

此示例将 book 分割成 50 行的段,命名为 sectaa、sectab、sectac 等等。

3. 要将文件分割成 2KB 的段,请输入:

split -b 2k book

此示例将 book 分割成 2*1024 字节的段,命名为 xaa、xab、xac 等等。

4. 要将文件分割成 676 个以上的段,请输入:

split -l 5 -a 3 book sect

此例将 book 分割成 5 行的段,命名为 sectaaa、sectaab、 sectaac 等等,直到 sectzzz(最多 17,576 个文件)。

三 : strtok():“字符串分割”实用函数

最近一直纠结于一个十分简单的问题:如何将一个字符串按标志分割开来?提出这个问题的初衷是自己在处理一个将命令行字符串转换为argc,argv&#26684;式的问题。

尝试了很多种方法,最后觉得利用strtok()函数来实现是一个比较好的方法。首先进行strtok()函数的介绍。

char *strtok(string, control);[www.61k.com]

--- Tokenize string with delimiter in control.

--- 通过分割符控制将字符串切片化。

Purpose:

strtok considers the string to consist of a sequence of zero or more text tokens separated by spans of one or more control chars. The first call, with string specified, returns a pointer to the first char of the first token, and will write a null char into string immediately following the returned token. Subsequent calls with zero for the first argument (string) will work through the string until no tokens remain. The control string may be different from call to call. When no tokens remain in string a NULL pointer is returned. Remember the control chars with a bit map, one bit per ASCII char. The null char is always a control char.

strtok认为字符串是由一个或多个文本切片组成,这些文本切片被一个或多个字符分隔开来。第一次调用时,返回第一个文本切片的第一个字符指针,同时将该文本切片后的控制字符设为NULL。此后的调用重复上面的操作,直到没有文本切片首字符返回(返回NULL)为止。这些控制字符可能在不同的调用中而不同。当字符串中没有文本切片时,则返回NULL。首次调用时,string指向要分解的字符串,之后再次调用要把string设成NULL。strtok在string中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。

Entry:

char *string --- string to tokenize, or NULL to get next token

char *control --- string of characters to use as delimiters

Exit:

Return pointer to first token in string, or if string was NULL, to next token. Return NULL when no more tokens remain.

Source Code:

#includestatic char *olds;/* Parse S into tokens separated by characters in DELIM. If S is NULL, the last string strtok() was called with is used. For example:char s[] = "-abc-=-def";x = strtok(s, "-"); // x = "abc"x = strtok(NULL, "-="); // x = "def"x = strtok(NULL, "="); // x = NULL// s = "abc\0=-def\0"*/char *strtok (s, delim) char *s; const char *delim;{ char *token; if (s == NULL) s = olds; /* Scan leading delimiters. */ //strspn : 返回字符串s中第一个不在指定字符串delim中出现的字符下标 //将指针移到第一个非delim中的字符的位置 s += strspn (s, delim); if (*s == &#39;\0&#39;) { olds = s; return NULL; } /* Find the end of the token. */ token = s; // char *strpbrk(const char *token, const char *delim); // 依次检验字符串s中字符,当被检验字符在字符串delim中也包含时,则停止检验,并返回该字符位置,空字符NULL不包括在内 // 获取到delim中字符在字符串s中第一次出现的位置 s = strpbrk (token, delim); if (s == NULL) /* This token finishes the string. */ olds = __rawmemchr (token, &#39;\0&#39;); else { /* Terminate the token and make OLDS point past it. */ *s = &#39;\0&#39;; olds = s + 1; } return token;}
//其实现的核心方法在于static char *olds;的方法,用于保存前次处理后的字符串。

举例说明:

将字符串”Hello,Brief,Kitty”字符串分割为”Hello”、”Brief”、”Kitty”。

代码可以这样实现:

#include#includeint main(){int i=0;char str[] = "Hello,Brief,Kitty";char *token[3];char *buf = str;while((token[i] = strtok(buf, ",")) != NULL){i++;buf = NULL;}for(i=0;i<3;i++)printf("%s\n",token[i]);return 0;}
现在,基于一般的命令行处理,现有以下代码:
#include#include#define MAXLEN 1024#define MAXCOUNT 64int main(){int i,argc=0;char *argv[MAXCOUNT],*buf;char cmdline[MAXLEN];printf("Please input the command line to be parsed:\n");if((buf=fgets(cmdline,MAXLEN,stdin))==NULL)printf("input error!\n");while((argv[argc] = strtok(buf, " ")) != NULL){argc++;buf = NULL;}printf("There is %d arguments:\n",argc);for(i=0;i结果为:

strtok strtok():“字符串分割”实用函数

本文标题:split分割字符串-python按照多个字符对字符串进行分割的方法
本文地址: http://www.61k.com/1060344.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1