python 多个类分隔符 如何splict

python如何处理单行实现三元表达式_百度知道
python如何处理单行实现三元表达式
如题,比如我有一个条件判断为真执行a为假执行b,用if else可以在多行实现,但是比较麻烦,有没有一行就能搞定的方法。熟悉php的时候,我可以用($b==$b) && $a=2这样的形式来实现,但是不知道python中有没有类似的快捷的写法。
我有更好的答案
按默认排序
首先让我们构成一个正则表达式。为简单起见,先构成一个正则表达式来识别下面格式的电话号码数字:(nnn)nnn-nnnn。 第一步,创建一个pattern对象来匹配上面的子字符串。一旦程序运行后,如果需要的话,可以让这个对象一般化。匹配上面格式的正则表达可以这样构成:(\d{3})\s\d{3}-\d{4},其中\d单字符类型用来匹配从0到9的任何数字,另外{3}重复符号,是个简便的记号,用来表示有3个连续的数字位,也等效于(\d\d\d)。\s也另外一个比较有用的单字符类型,用来匹配空格,比如Space键,tab键和换行符。 是不是很简单?但是,如果把这个正则表达式的模式用在java程序中,还要做两件事。对java的解释器来说,在反斜线字符(\)前的字符有特殊的含义。在java中,与regex有关的包,并不都能理解和识别反斜线字符(\),尽管可以试试看。但为避免这一点,即为了让反斜线字符(\)在模式对象中被完全地传递,应该用双反斜线字符(\)。此外圆括号在正则表达中两层含义,如果想让它解释为字面上意思(即圆括号),也需要在它前面用双反斜线字符(\)。也就是像下面的一样: \\(\\d{3}\\)\\s\\d{3}-\\d{4} 现在介绍怎样在java代码中实现刚才所讲的正则表达式。要记住的事,在用正则表达式的包时,在你所定义的类前需要包含该包,也就是这样的一行: import java.util.regex.*; 下面的一段代码实现的功能是,从一个文本文件逐行读入,并逐行搜索电话号码数字,一旦找到所匹配的,然后输出在控制台。 BufferedR Pattern pattern = pile(&\\(\\d{3}\\)\\s\\d{3}-\\d{4}&); in = new BufferedReader(new FileReader(&phone&)); S while ((s = in.readLine()) != null) { Matcher matcher = pattern.matcher(s); if (matcher.find()) { System.out.println(matcher.group()); } } in.close(); 对那些熟悉用Python或Javascript来实现正则表达式的人来说,这段代码很平常。在Python和Javascript这些语言中,或者其他的语言,这些正则表达式一旦明确地编译过后,你想用到哪里都可以。与Perl的单步匹配相比,看起来多多做了些工作,但这并不很费事。 find()方法,就像你所想象的,用来搜索与正则表达式相匹配的任何目标字符串,group()方法,用来返回包含了所匹配文本的字符串。应注意的是,上面的代码,仅用在每行只能含有一个匹配的电话号码数字字符串时。可以肯定的说,java的正则表达式包能用在一行含有多个匹配目标时的搜索。本文的原意在于举一些简单的例子来激起读者进一步去学习java自带的正则表达式包,所以对此就没有进行深入的探讨。 这相当漂亮吧! 但是很遗憾的是,这仅是个电话号码匹配器。很明显,还有两点可以改进。如果在电话号码的开头,即区位号和本地号码之间可能会有空格。我们也可匹配这些情况,则通过在正则表达式中加入\s?来实现,其中?元字符表示在模式可能有0或1个空格符。 第二点是,在本地号码位的前三位和后四位数字间有可能是空格符,而不是连字号,更有胜者,或根本就没有分隔符,就是7位数字连在一起。对这几种情况,我们可以用(-|)?来解决。这个结构的正则表达式就是转换器,它能匹配上面所说的几种情况。在()能含有管道符|时,它能匹配是否含有空格符或连字符,而尾部的?元字符表示是否根本没有分隔符的情况。 最后,区位号也可能没有包含在圆括号内,对此可以简单地在圆括号后附上?元字符,但这不是一个很好的解决方法。因为它也包含了不配对的圆括号,比如&(555& 或 &555)&。相反,我们可以通过另一种转换器来强迫让电话号码是否带有有圆括号:(\(\d{3}\)|\d{3})。如果我们把上面代码中的正则表达式用这些改进后的来替换的话,上面的代码就成了一个非常有用的电话号码数字匹配器: Pattern pattern = pile(&(\\(\\d{3}\\)|\\d{3})\\s?\\d{3}(-|)?\\d{4}&); 可以确定的是,你可以自己试着进一步改进上面的代码。 现在看看第二个例子,它是从Friedl的中改编过来的。其功能是用来检查文本文件中是否有重复的单词,这在印刷排版中会经常遇到,同样也是个语法检查器的问题。 匹配单词,像其他的一样,也可以通过好几种的正则表达式来完成。可能最直接的是\b\w+\b,其优点在于只需用少量的regex元字符。其中\w元字符用来匹配从字母a到u的任何字符。+元字符表示匹配匹配一次或多次字符,\b元字符是用来说明匹配单词的边界,它可以是空格或任何一种不同的标点符号(包括逗号,句号等)。 现在,我们怎样来检查一个给定的单词是否被重复了三次?为完成这个任务,需充分利用正则表达式中的所熟知的向后扫描。如前面提到的,圆括号在正则表达式中有几种不同的用法,一个就是能提供组合类型,组合类型用来保存所匹配的结果或部分匹配的结果(以便后面能用到),即使遇到有相同的模式。在同样的正则表达中,可能(也通常期望)不止有一个组合类型。在第n个组合类型中匹配结果可以通过向后扫描来获取到。向后扫描使得搜索重复的单词非常简单:\b(\w+)\s+\1\b。 圆括号形成了一个组合类型,在这个正则表示中它是第一组合类型(也是仅有的一个)。向后扫描\1,指的是任何被\w+所匹配的单词。我们的正则表达式因此能匹配这样的单词,它有一个或多个空格符,后面还跟有一个与此相同的单词。注意的是,尾部的定位类型(\b)必不可少,它可以防止发生错误。如果我们想匹配&Paris in the the spring&,而不是匹配&Java's regex package is the theme of this article&。根据java现在的格式,则上面的正则表达式就是:Pattern pattern =pile(&\\b(\\w+)\\s+\\1\\b&); 最后进一步的修改是让我们的匹配器对大小写敏感。比如,下面的情况:&The the theme of this article is the Java's regex package.&,这一点在regex中能非常简单地实现,即通过使用在Pattern类中预定义的静态标志CASE_INSENSITIVE : Pattern pattern =pile(&\\b(\\w+)\\s+\\1\\b&, Pattern.CASE_INSENSITIVE); 有关正则表达式的话题是非常丰富,而且复杂的,用Java来实现也非常广泛,则需要对regex包进行的彻底研究,我们在这里所讲的只是冰山一角。即使你对正则表达式比较陌生,使用regex包后会很快发现它强大功能和可伸缩性。如果你是个来自Perl或其他语言王国的老练的正则表达式的黑客,使用过regex包后,你将会安心地投入到java的世界,而放弃其他的工具,并把java的regex包看成是手边必备的利器。参考资料:
其他类似问题
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前位置: >
> 很有难度的有关问题,关于多张图片地址保存在一个字段中,怎么用datagrid来显示
很有难度的有关问题,关于多张图片地址保存在一个字段中,怎么用datagrid来显示
很有难度的问题,关于多张图片地址保存在一个字段中,如何用datagrid来显示?图片数量不固定,怎么实现绑定呢??
这么多图片,你的程序怎么知道要绑定哪个呢
& & (0)(0)一个个link加阿,你不是已近用“,”分割了吗
& & (0)(0)路过,帮顶下~~
& & (0)(0)public string getImg(string str)
string[] imgInfo=str.split( ' ');
string imgtemp= & &;
for(int i=0;i &imgInfo.Li++)
if(imgInfo[i]!= & &)
imgtemp+= & &img src= ' &+imgInfo[i]+ & '&
&%#getImg(Eval( &字段名 &).ToString())%&
& & (0)(0)splict( ', ')中少写了个,
w123052 & &
& & (0)(0)你的数据库设计1NFS都没达到,好好看点书吧..
& & (0)(0)shun3(天使鬼差) ( ) 信誉:100
你的数据库设计1NFS都没达到,好好看点书吧..
----------------------------------------------------
哎,看到这句话就想到我现在写的程序,我们的数据库设计的更烂,惨不忍睹,
做的系统,如果要加一个部门那么程序还有数据库要大动干戈了,估计改程序和重新导数据要一个星期,(PS:数据库不是我设计的)
w123052 & &
& & (0)(0)弄个特殊的字符来分隔就行了w & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-列表比较 python比较两个列表是否相等 - 为程序员服务
为程序员服务
python比较两个列表是否相等
L1 = [1, ('a', 3)]
# same value, unique objects
L2 = [1, ('a', 3)]
print L1 == L2, L1 is L2
# equivalent?, same object?
您可能的代码
荣誉:1065
相关专栏文章
相关聚客文章python 连接 sqlalchemy orm库查询示例 - 为程序员服务
为程序员服务
python 连接 sqlalchemy orm库查询示例
python 连接 sqlalchemy orm库查询示例
import sqlalchemy
from sqlalchemy.orm import sessionmaker, scoped_session
connection = &mysql://root:@localhost/mydatabase&
# pool_size - указывает сколько запросов хранить в очереди, если будет больше, вылетит exception
engine = sqlalchemy.create_engine(connection, pool_size=30)
# Создаем объект Session и дальше во всех потоках используем только его.
Session = scoped_session(sessionmaker(bind=engine))
#Accounts - моя таблица, к которой мне нужно делать запросы, код по настройке отображения я опустил.
accounts = Session.query(Accounts)
account = accounts[0]
您可能的代码
荣誉:1339
相关专栏文章
相关聚客文章}

我要回帖

更多关于 linux多个python 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信