Python 学习入门(18)—— 字符串

原创 2013年12月06日 19:21:28

Python判断字符串只包含数字

一种方法是 a.isdigit(),但这种方法对于包含正负号的数字字符串无效,更为准确的为:

#!/usr/bin/python
# -*- coding:utf-8 -*-
#
# http://blog.ithomer.net

import sys
import math

# 判断是否为数字
def isNum(value):
    try:
        value + 1
    except TypeError:
        return False
    else:
        return True

# 判断是否为数字
def isNum2(value):
    try:
        x = int(value)
    except TypeError:
        return False
    except ValueError:
        return False
    except Exception, e:
        return False
    else:
        return True


def test1():
    
    a = "123abcDE"
    print a.isalnum()       # True, 所有字符都是数字或者字母

    a = "abcDE"
    print a.isalpha()       # True, 所有字符都是字母

    a = "123.3"
    print a.isdigit()       # False, 所有字符都是数字

    a = "abcde"
    print a.islower()       # True, 所有字符都是小写

    a = "ABCDE"
    print a.isupper()       # True, 所有字符都是大写

    a = "Abcde"
    print a.istitle()       # True, 所有单词都是首字母大写,像标题

    a = "\t"
    print a.isspace()       # True, 所有字符都是空白字符、\t、\n、\r

    arr = (1, 2.1, -3, -4.5, '123a', 'abc', 'aBC', 'Abc', 'ABC', '\t')
    for a in arr:
        print a,isNum(a)

    '''
    1 True
    2.1 True
    -3 True
    -4.5 True
    123a False
    abc False
    aBC False
    Abc False
    ABC False
        False
    '''

    for a in arr:
        print a,isNum2(a)
    '''
    1 True
    2.1 True
    -3 True
    -4.5 True
    123a False
    abc False
    aBC False
    Abc False
    ABC False
        False
    '''
这样更准确一些,适用性也更广。但如果你已经确信没有正负号,使用字符串的isdigit()方法则更为方便。


Python 字符串操作,如string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等

def test2():

    # 复制字符串 
    str1 = "ithomer.net"
    str2 = str1
    str1 = "blog"
    print str1, str2        # blog ithomer.net

    # 连接字符串
    str1 = "ithomer.net"
    str2 = "blog."
    str2 += str1
    print str1, str2        # ithomer.net blog.ithomer.net
    
    # 查找字符
    str1 = "ithomer.net"
    str2 = ".net"
    pos = str1.index(str2)
    print pos               # 7

    # 比较字符串
    str1 = "blog.ithomer.net"
    str2 = "forum.ithomer.net"
    pos = cmp(str1, str2)
    print pos               # -1

    # 是否包含指定的字符
    str1 = "blog.ithomer.net"
    str2 = ".ithomer."
    pos = len(str1 and str2)
    print pos               # 9

    # 字符串长度
    str1 = "blog.ithomer.net"
    pos = len(str1)
    print pos               # 16

    # 字符串大小写转换
    str1 = "blog.ithomer.net"
    str2 = "BLOG.ithomer.NET"
    print str1.upper()      # BLOG.ITHOMER.NET
    print str2.lower()      # blog.ithomer.net

    # 追加指定长度的字符串
    str1 = "blog.ithomer.net"
    str2 = "1234567"
    n = 3
    str1 += str2[0:n]
    print str1,str2         # blog.ithomer.net123 1234567

    # 字符串指定长度比较
    str1 = "blog.ithomer.net"
    str2 = "blog.ithomer.NET"
    n = 11
    print cmp(str1[0:n], str2[0:n])     # 0

    # 复制指定长度的字符
    str1 = "blog.ithomer.net"
    str2 = ""
    n = 12
    print str1[0:n]         # blog.ithomer

    # 将字符串前n个字符替换为指定的字符
    str1 = "blog.ithomer.net"
    ch = 'r'
    n = 3
    print n*ch + str1       # rrrblog.ithomer.net

    # 扫描字符串 
    sStr = 'cekjgdklab'   
    sStr1 = 'gka'   
    nPos = -1 
    for c in sStr1: 
        print c
    print nPos   

    # 翻转字符串 
    str1 = "ithomer.net"
    str2 = str1[::-1]
    print str1,str2         # ithomer.net ten.remohti

    # 查找字符串
    str1 = "ithomer.net"
    str2 = ".net"
    pos = str1.find(str2)
    print pos               # 7
    
    # 分割字符串
    str1 = "blog.ithomer.net"
    str2 = "."
    str3 = str1[str1.find(str2) + 1:]
    print str3              # ithomer.net
    print str1.split(str2)  # ['blog', 'ithomer', 'net']

    # 连接字符串
    str1 = ['blog', 'ithomer', 'net']
    str2 = "."
    str3 = str2.join(str1)
    print str3              # blog.ithomer.net

    # 只显示字母与数字
    str1 = "521.ithomer.NET $ @ # ! 1314"
    fmt = "abcdefghijklmnopqrstuvwxyz0123456789"
    for c in str1:
        if not c in fmt:
            str1 = str1.replace(c,'')
    print str1              # 521ithomer1314



Python unicode字节串转成中文问题

Example 1:
>>> s = r"\u65b0\u6d6a\u5fae\u535a\u6ce8\u518c"
>>> s
'\\u65b0\\u6d6a\\u5fae\\u535a\\u6ce8\\u518c'
>>> print s
\u65b0\u6d6a\u5fae\u535a\u6ce8\u518c
>>> s = s.decode("unicode_escape");     #就是这个函数
>>> print s
新浪微博注册


Example 2:
>>> str_ = "Russopho\xe9bic, clichd and just pl\xe9ain stupid."
>>> print str_
Russopho?bic, clichd and just pl?ain stupid.
>>> str_ = str_.decode("unicode_escape")
>>> print str_
Russophoébic, clichd and just pléain stupid.


参考推荐:

Python字符串操作

Python difflib

python unicode字节串转成中文问题


版权声明:本文为米扑博客原创文章,未经米扑博客允许不得转载。

相关文章推荐

C语言入门(18)——数组与字符串

用来存放字符量的数组称为字符数组。字符串可以看作一个数组,它的元素是字符型的。 字符数组的定义 形式与前面介绍的数值数组相同。例如:char c[10];由于字符型和整型通用,也可以定义为int c[...

python入门系列18―——打包

Distutils py2exe

Python学习之路18——控制语句,迭代器, 列表解析

一个Python小白的学习之路

Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化

Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说那...

javascript学习之日期 字符串(18)—— 字符串 常用方法(中)

1、indexOf(str)方法 indexOf(str) 默认返回在字符串中第一次出现的索引 示例代码: var ss="aaabbbcccdddeeebbbfffghi"; ...

算法竞赛入门经典(第二版)-刘汝佳-第三章 数组与字符串 例题+习题(17/18)

说明本文是我对第三章题目的练习总结,建议配合紫书——《算法竞赛入门经典(第2版)》阅读本文。 另外为了方便做题,我在VOJ上开了一个contest,欢迎一起在上面做:第三章contest例题例3-1...

Python语言入门学习——模块

  • 2015年11月07日 10:30
  • 47KB
  • 下载

用Python和Pygame写游戏-从入门到精通(18)

本文转自:http://eyehere.net/2011/python-pygame-novice-professional-18/ 3D是非常酷的技术,同时也就意味着更多的工作,上次的简单介绍之后...
  • thystar
  • thystar
  • 2015年05月01日 12:50
  • 567

【零基础入门学习Python笔记015】字符串:格式化

replacement   位置参数和关键字参数两种 注意:位置参数必须在关键字参数之前;是点而不是逗号(黄矩形区域就是错误的地方);是花括号而不是圆括号。 :表示格式化的开始;f代表定点数,与...
  • SMF0504
  • SMF0504
  • 2016年03月18日 15:49
  • 906

Python编程入门-第六章 字符串 -学习笔记

第6章 字符串一、字符串索引 1、假设有字符串s=”apple”,那么可以通过索引去访问其中的字符,Python通过方括号来标识字符串索引,索引从0开始:s[0]=”a”,s[1]=”p”,s[2]...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 学习入门(18)—— 字符串
举报原因:
原因补充:

(最多只允许输入30个字)