精华内容
下载资源
问答
  • I'm trying to replace words like 'rna' with 'ribonucleic acid' from a dictionary of abbreviations. I tried writing the following, but it doesn't replace the abbreviations.import csv,reoutfile = open ...

    I'm trying to replace words like 'rna' with 'ribonucleic acid' from a dictionary of abbreviations. I tried writing the following, but it doesn't replace the abbreviations.

    import csv,re

    outfile = open ("Dict.txt", "w")

    with open('Dictionary.csv', mode='r') as infile:

    reader = csv.reader(infile)

    mydict = {rows[0]:rows[1] for rows in reader}

    print >> outfile, mydict

    out = open ("out.txt", "w")

    ss = open ("trial.csv", "r").readlines()

    s = str(ss)

    def process(s):

    da = ''.join( mydict.get( word, word ) for word in re.split( '(\W+)', s ) )

    print >> out, da

    process(s)

    A sample trial.csv file would be

    A,B,C,D

    RNA,lung cancer,15,biotin

    RNA,lung cancer,15,biotin

    RNA,breast cancer,15,biotin

    RNA,breast cancer,15,biotin

    RNA,lung cancer,15,biotin

    Sample Dictionary.csv:

    rna,ribonucleic acid

    rnd,radical neck dissection

    rni,recommended nutrient intake

    rnp,ribonucleoprotein

    My output file should have 'RNA' replaced by 'ribonucleic acid'

    解决方案

    I think this line s = str(ss) is causing the problem - the list that was created just became a string!

    Try this instead:

    def process(ss):

    for line in ss:

    da = ''.join( mydict.get( word, word ) for word in re.split( '(\W+)', line ) )

    print >> out, da

    process(ss)

    展开全文
  • I'm trying to replace words like 'rna' with 'ribonucleic acid' from a dictionary of abbreviations. I tried writing the following, but it doesn't replace the abbreviations.import csv,reoutfile = open ...

    1586010002-jmsa.png

    I'm trying to replace words like 'rna' with 'ribonucleic acid' from a dictionary of abbreviations. I tried writing the following, but it doesn't replace the abbreviations.

    import csv,re

    outfile = open ("Dict.txt", "w")

    with open('Dictionary.csv', mode='r') as infile:

    reader = csv.reader(infile)

    mydict = {rows[0]:rows[1] for rows in reader}

    print >> outfile, mydict

    out = open ("out.txt", "w")

    ss = open ("trial.csv", "r").readlines()

    s = str(ss)

    def process(s):

    da = ''.join( mydict.get( word, word ) for word in re.split( '(\W+)', s ) )

    print >> out, da

    process(s)

    A sample trial.csv file would be

    A,B,C,D

    RNA,lung cancer,15,biotin

    RNA,lung cancer,15,biotin

    RNA,breast cancer,15,biotin

    RNA,breast cancer,15,biotin

    RNA,lung cancer,15,biotin

    Sample Dictionary.csv:

    rna,ribonucleic acid

    rnd,radical neck dissection

    rni,recommended nutrient intake

    rnp,ribonucleoprotein

    My output file should have 'RNA' replaced by 'ribonucleic acid'

    解决方案

    I think this line s = str(ss) is causing the problem - the list that was created just became a string!

    Try this instead:

    def process(ss):

    for line in ss:

    da = ''.join( mydict.get( word, word ) for word in re.split( '(\W+)', line ) )

    print >> out, da

    process(ss)

    展开全文
  • return '' print expand_abbr("Welcome to Algriculture Bank China", 'ABC') 分析 缩写词 FEMA 分解为 F*** E*** M*** A*** 规律 大写字母 + 小写(大于等于1个)+ 空格 参考代码 问题 以上分析对于示例前三个是...

    看具体示例

    importredefexpand_abbr(sen, abbr):

    lenabbr=len(abbr)

    ma= ''

    for i inrange(0, lenabbr):

    ma+= abbr[i] + "[a-z]+" + ' '

    print 'ma:', ma

    ma= ma.strip(' ')

    p=re.search(ma, sen)ifp:returnp.group()else:return ''

    print expand_abbr("Welcome to Algriculture Bank China", 'ABC')

    分析

    缩写词  FEMA

    分解为  F*** E*** M*** A***

    规律   大写字母 + 小写(大于等于1个)+ 空格

    参考代码

    问题

    以上分析对于示例前三个是可以的,但是后三个出现问题了,大写字母开头的扩充词里夹杂这小写字母

    解决

    缩写词 FDA

    分解为  F*** (**)? E*** (**)? M*** (**)? A***

    其中(**)?表示小写字母组合出现一次或不出现

    规律   大写字母 + 小写(大于等于1个)+ 空格 + [小写+空格](0次或1次)

    参考代码

    importredefexpand_abbr(sen, abbr):

    lenabbr=len(abbr)

    ma= ''

    for i in range(0, lenabbr-1):

    ma+= abbr[i] + "[a-z]+" + ' ' + '([a-z]+ )?'ma+= abbr[lenabbr-1] + "[a-z]+"

    print 'ma:', ma

    ma= ma.strip(' ')

    p=re.search(ma, sen)ifp:returnp.group()else:return ''

    print expand_abbr("Welcome to Algriculture Bank of China", 'ABC')

    语法

    ? 匹配前边一次或0次

    ()作为一个分组,后边可以加量词,表示匹配的次数

    展开全文
  • 在本文中,我将告诉大家一些容易忽视的Python编程原理、规则和一些有趣的事实。简介对于许多开始学习编程的人来说,Python已经成为他们的首选。Python有非常直观的语法和支持动态类型的灵活性。此外,它是一种解释...

    在本文中,我将告诉大家一些容易忽视的Python编程原理、规则和一些有趣的事实。

    简介

    对于许多开始学习编程的人来说,Python已经成为他们的首选。Python有非常直观的语法和支持动态类型的灵活性。此外,它是一种解释语言,这使得使用交互式控制台进行学习成为可能。基本上,我们只需使用命令行工具(如Mac中的Terminal)来启动Python学习,因为Python在macOS中是默认附带安装的。

    我们在学习Python时,会逐渐熟悉它的数据结构、控制流、类、函数和其他基本内容。我发现了一件很有趣的事情,那就是Python中我们经常会遇到的各种首字母缩略词。在本文中,我将介绍十个这样的缩略词。其中有一些是通用的编程原理,还有一些是针对Python的特定编码。然而,每一种方法都有非常有趣的地方。

    1. OOP(面向对象编程)

    我们一定要知道的第一个缩写是OOP--面向对象编程,这也是Python编程设计的基础。我们知道编程本身是关于编码的,但是程序本身应该是关于数据的。我们的程序需要获取输入数据、过程数据和输出数据。注意,这里讨论的数据是一般意义上的数据,包括表格数据、字符串、用户操作(例如,单击按钮)、图像以及具有信息的任何形式的数据。我们代码的工作任务是处理各种形式的数据,并以所需的方式呈现它们。

    为了完成我们的工作,我们需要能够处理这些数据的代码,而现代编程语言(包括Python)中的一种常见设计模式就是采用OOP范式。这个想法非常直观-我们用特定的对象包装数据。更具体地说,对象可以保存数据(例如,属性)并且可以操作数据(例如,方法)。例如,如果我们开发一个赛车游戏。我们可以构建汽车对象,并且每个对象都可以具有特定的属性,例如颜色,最大速度和重量。此外,这些对象还可以进行制动和加速等操作。这些数据的逻辑组织以对象(汽车)为中心。

    让我们看一下Python中的特定示例。我们可以使用内置的 str 类包装字符串数据,这不仅允许我们使用string对象传递字符串数据,还可以改变字符串的表示方式。让我们在下面看到一个非常简单的示例。

    >>> # 创建str类型的变量

    ... hello = "Hello Python!"

    ...

    ... # 将数据发送到函数调用

    ... print(hello)

    ...

    ... # 使用字符串方法操作字符串数据

    ... hello_lower = hello.lower()

    ... hello_upper = hello.upper()

    ... print('lowercased:', hello_lower)

    ... print('uppercased:', hello_upper)

    ...

    Hello Python!

    lowercased: hello python!

    uppercased: HELLO PYTHON!

    2.DRY(不要重复)

    DRY原则(不要重复)是每个程序员应该实践的最基本的规则之一。这个规则很简单:如果你注意到你的代码中有任何重复,这是代码需要进行重构的信号,尽量减少重复代码,或者尽可能完全删除重复代码。下面的伪代码向你展示了通过应用DRY原则重构某些代码。

    def do_something(item):

    pass

    # 重复性工作

    do_something(item0)

    do_something(item1)

    do_something(item2)

    # 应用DRY

    for item in (item0, item1, item3):

    do_something(item)

    代码重构还有另外一个应用场景:你发现自己要处理的是一堆具有相同结构的数据。与其使用一系列字典、列表或元组来存储每个人的数据,不如考虑使用自己的类来处理这些数据。这不仅是为了减少代码出错的可能性,而且有利于长期的可维护性。

    3. PIP(Python软件包安装程序)

    Python的流行最重要的原因可能是它的开源特性,这就导致大量免费的Python程序包源源不断地开放出来。根据Wikipedia的介绍,在Python软件包索引(PyPI)中索引了235,000多个软件包。 我们可以使用 pip 工具从 PyPI 安装任何软件包。 该安装过程非常轻松,只需在命令或终端中使用一行代码即可。 以下代码段总结了一些常用用法。

    # 安装最新版本

    pip install package_name

    # 安装特定版本

    pip install package_name==version_number

    # 卸载软件包

    pip uninstall package_name

    # 显示已安装的软件包

    pip list

    # 显示有关特定包的信息

    pip show package_name

    #安装依赖项列表,例如克隆虚拟环境

    pip install -r requirements.txt

    4. LEGB(本地,封闭,全局和内置)

    LEGB规则引用 Python 中的变量查找顺序,如下图所示。 具体来说,当解释程序尝试解析变量时,Python 具有四层作用域--了解将哪些值绑定到变量。 首先从本地范围开始,该范围可以是函数或类。 如果解释器找到了变量的相应绑定值,它将停止查找并将变量与该特定值一起使用。可变分辨率规则

    否则,它将在更高的级别上查找它—封闭范围。封闭范围只存在于函数的嵌套结构中。具体地说,当一个函数在另一个函数中声明时,我们称内部函数为内部函数,而外部函数称为外部函数。当解释器试图解析在内部函数的作用域内使用的变量时,如果不能在局部范围内解析,它将转到封闭的作用域,即外部函数的局部作用域。

    如果它仍然无法解析封闭范围内的变量,它将转到全局范围。全局范围通常是模块级的,通常是一个独立的 Python 文件。值得注意的是,当我们将包导入当前文件时,导入的函数和类也将成为全局范围的一部分。内置范围是指当启动解释器时加载的函数、类和其他模块,以使这些最基本的对象始终可用(例如打印和其他内置函数)。

    5. MRO(方法解析顺序)

    方法解析顺序表示 Python 或编程语言通常如何解析方法或属性。 与上面讨论的 LEGB 规则关注的是解决变量不同,MRO关注的是对象以及对象的方法调用或特定属性的获取方式。MRO 主要是在多继承的上下文中讨论的--从多个类(即超类)和/或多层继承继承的类(即子类)。因为子类和超类都共享某些实现方法可能不同的通用方法,所以 Python 解释器需要一种机制来确定在特定调用中应使用哪种方法或属性,而这正是MRO的职责。下面的代码段显示了一个示意性示例。

    >>> class X:

    ... def bin(self):

    ... print(f"bin called in X")

    ...

    ... class Y(X):

    ... def go(self):

    ... print(f"go called Y")

    ...

    ... class Z(X):

    ... def go(self):

    ... print(f"go called Z")

    ...

    ... class W(Y, Z):

    ... def bin(self):

    ... super().bin()

    ... print(f"bin called W")

    ...

    ... def bingo(self):

    ... self.bin()

    ... self.go()

    ...

    ... w = W()

    ... w.bingo()

    ...

    bin called in X

    bin called W

    go called Y

    对于W类的实例(第22行),当我们调用 bingo()方法时,此方法将在其自己的类中解析,因为它是在类中定义的(第18-20行)。但是,此方法将进一步调用 bin()和go()方法。以类似的方式,bin()方法在其自己的类上解析,但是,它调用超类的 bin()方法,如第15行所示。但是在其直接超类(即Y和Z)中,都没有实现 bin()方法,因此 Python 会比超类的超类(即X)高一个级别,在超类中实现并调用 bin()方法。

    值得注意的是,对于 W 的 go()方法,其两个超类都实现了此方法,但是如你所见,只有 Y 类中使用的实现才被调用。这是因为当我们定义 W 类时,继承顺序为 Y 和 Z,这将使 MRO 遵循相同的顺序。与此相关,我们可以使用特殊方法 __mro__ 找出特定类的 MRO,如下所示。另外,为了向大家展示类继承顺序的重要性,我们创建了另一个类,其中Z类位于Y类之前,这将更改 W_类的MRO。

    >>> print('W Class MRO:', W.__mro__)

    ...

    ... class W_(Z, Y):

    ... pass

    ...

    ... print('W_ Class MRO:', W_.__mro__)

    ...

    W Class MRO: (, , , , )

    W_ Class MRO: (, , , , )

    6.&7.EAFP(请求原谅比请求许可更容易)和LBYL(三思而后行)

    EAFP(请求原谅比请求许可更容易)编码风格正是 Python 蓬勃发展的方向。因为 Python 是一种动态编程语言,所以在运行时,实现以及对现有实例对象、类甚至模块的修改都是可能的。因此,建议大家在假定特定属性或功能可用的情况下编写代码。换言之,如果某些代码可能存在特定的问题,那么就让问题浮出水面并相应地解决它们。通过应用 EAFP 规则,如果我们想更进一步,我们可以简单地使用 try…except 语句编写特定的代码来处理代码可能引发的潜在异常。基本上,我们的想法是发生意外的事情,我们会事后处理。

    与 EAFP 原则相反,还有另一种编码样式称为 LBYL,它代表“跨越式”。使用这种编码方式,程序员应该在某些代码可以运行之前排除所有可能的不希望出现的情况。因此,大家可以在项目中看到更多遵循 LBYL 原则的 if 语句。这种编码方式基本上可以用特别的方式来防止任何问题。

    下面的代码片段向大家展示了一个使用 EAFP 与 LBYL 的可能场景。对于 EAFP 编码样式,我们只需在 try…except 语句中包装代码和预期可能的异常,而对于 LBYL 编码样式,我们必须在划分之前使用自省方法和值检查来验证适用的条件。如你所见,EAFP 代码看起来更加整洁,而且没有创建嵌套结构。当然,如果你愿意,也可以在项目中应用 LBYL,而且不会改变项目最终的工作方式。

    def with_EAFP_divide_ten_by(number):

    try:

    print(f'10 divided by {number} is {10 / number}.')

    except ZeroDivisionError:

    print("You can't divide zero.")

    except TypeError:

    print("You can only divide a number.")

    def with_LBYL_divide_ten_by(number):

    if isinstance(number, int) or isinstance(number, float):

    if number == 0:

    print("You can't divide zero.")

    else:

    print(f'10 divided by {number} is {10 / number}.')

    else:

    print("You can only divide a number.")

    8. PEP(Python增强建议)

    在上一节中,我们讨论了编码风格。 但是,最具影响力的Python编码风格指南之一是 PEP 8--Python增强建议#8,由 BDFL(将在下面讨论)和其他几个 Python 核心维护者共同编写。PEP涵盖了所有与 Python 相关的内容。 大家可以在官方网站上找到整个列表。 以下为一些著名的文章:

    9.BDFL(仁慈的生命独裁者)

    什么是BDFL?当然,标题已经告诉了你它代表什么,但它实际上意味着什么?

    在维基百科上,它的定义是:仁慈的生命独裁者(BDFL)是给少数开源软件开发领导人的称号,他们通常是在社区内部的争议或争论中保留最终发言权的项目创始人。

    尽管这个定义通常适用于开源软件开发,但它首先在 Python 社区中使用,作为对 Guido van Rossum(GvR)的引用,GvR 是 Python 编程语言的创建者。在担任 BDFL 职位 20 多年后,于 2018 年卸任。

    10. REPL(读--评估--打印循环)

    在我看来,REPL(读取-评估-打印循环)是让我们能够这么轻松学习Python的便捷工具。 正如我们所知道的,我们甚至可以开始像使用命令或终端窗口一样简单地学习Python编程。 你可以使用pip工具如前所示的方法来安装任何软件包。 更重要的是,我们可以立即编写第一行Python代码,不需要使用其他编程语言配置任何 IDE 工具。

    >>> print("Hello World!")

    Hello World!

    >>> 3 * 2

    6

    >>> type(5)

    REPL工作流非常简单——在控制台中读取代码、对其进行求值并打印出任何适用的结果,然后反复重复这三个步骤,用于探索 Python 的各种特性。REPL 是在标准 Python 或其他常见 Python 开发工具(如ipython)中作为默认模式实现的,ipython 是著名的 Python 学习和编码工具 Jupiter Notebook 的基础。

    结论

    Python是一种灵活而强大的 OOP 语言,由 BDFL GvR 创建。 利用 PIP 命令,我们可以轻松地管理 Python 软件包,并通过 REPL 在控制台中学习语言和各种软件包。 当我们使用 Python 进行编程时,必须遵循 PEP 8 概述中的样式。其他重要的编码原理包括 DRY 和 EAFP 。 如果你愿意,也可以在编码中做一些LBYL。 LEGB 规则和 MRO 能够帮助你了解如何解析变量、属性和函数,让你的代码按照自己的预期来运行。

    --END--

    喜欢本文的同学记得转发+点赞~

    更多内容,欢迎大家关注我们的公众号:为AI呐喊(weainahan)

    展开全文
  • Implement the function ... as these examples illustrate: assert abbreviate('January') == 'Jan' assert abbreviate('abril') == 'abr' 写一个程序,能够取一个单词的前三位缩写,能够适用于任何长度的单词。 展开
  • import re import urllib from bs4 import BeautifulSoup url = ... 链接地址:http://blog.sciencenet.cn/blog-645111-1014531.html 上一篇:Python提取网页中的文本
  • 因此,我首先按照上面的描述用大写字符将其分解,然后我试图找到所有用空格隔开的首字母缩略(即“B B C”),并将它们组合成一个没有空格的单词(即“BBC”)。有没有一种方法可以使用regex来实现这一点?在 编辑...
  • 缩写词 python习题 pta

    2021-04-21 13:18:42
    缩写词 python pta题解 下面展示一些 内联代码片。 #第6章函数-6 缩写词 (20 分) #缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 def acronym...
  • Abbreviations一部缩写词典
  • Python编程PTA题解——缩写词

    千次阅读 2020-04-14 12:01:43
    缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请...
  • python 6-6 缩写词 (20分)

    千次阅读 2020-04-06 14:13:04
    缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请在...
  • 缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请...
  • 缩写词   FDA 分解为  F*** (**)? E*** (**)? M*** (**)? A***   其中(**)?表示小写字母组合出现一次或不出现 规律  大写字母 + 小写(大于等于1个)+ 空格 + [小写+空格](0次或1次) 参考代码 ...
  • 缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请在...
  • PTA_Python_第6章函数-6 缩写词 (20分)

    千次阅读 2020-04-30 19:24:07
    缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请...
  • 缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: /* 请在...
  • 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习...
  • 缩写词 缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例:...
  • 第6章函数-6 缩写词 (20分)【python

    千次阅读 2020-04-04 19:17:35
    缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: ...
  • 第6章函数-6 缩写词 def acronym(phrase): res = "" lst = phrase.split() for i in lst: res += i[0].upper() return res
  • Bootstrap 排版缩写词

    2018-03-05 09:31:18
    标记为缩写词之后,浏览器、拼写检查器、翻译系统、搜索引擎都能根据它来了解文本的性质。一般会在 <abbr> 元素title 属性中,定义对缩写词的完整描述。定义 title 属性后,浏览器会在元素下方添加一...
  • 缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。 函数接口定义: acronym(phrase); phrase是短语参数,返回短语的缩写词 裁判测试程序样例: ...
  • 专题博客链接 [题解]浙大Python PTA课后习题博客记录(Python) 原题题目 代码实现 def acronym(phrase): string = phrase.split();ret = '';strl = len(string) for i in range(strl): ret += string[i][0].upper() ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,735
精华内容 3,494
关键字:

python缩写词

python 订阅