第三章 原料加工

raw.find("PART I")

raw.rfind("End of Project Gutenberg's Crime")

通过find和rfind标记文章的开始和末尾


将要处理的文本拷贝到python文件夹下后,

f=open("2008.txt")

raw=f.read()

words=raw.split()

len(words)

转化为单词


逐行显示文本,

f = open('2008.txt', 'rU')

for line in f:

print line.strip()


字符串操作总结:

s.find(t) 字符串s 中包含t 的第一个索引(没找到返回-1)
s.rfind(t) 字符串s 中包含t 的最后一个索引(没找到返回-1)
s.index(t) 与s.find(t)功能类似,但没找到时引起ValueError
s.rindex(t) 与s.rfind(t)功能类似,但没找到时引起ValueError
s.join(text) 连接字符串s 与text 中的词汇
s.split(t) 在所有找到t 的位置将s 分割成链表(默认为空白符)
s.splitlines() 将s 按行分割成字符串链表
s.lower() 将字符串s 小写
s.upper() 将字符串s 大写
s.titlecase() 将字符串s 首字母大写
s.strip() 返回一个没有首尾空白字符的s 的拷贝
s.replace(t, u) 用u 替换s 中的t


import re

为了使用正则表达式,导入re函数库

[w for w in words if re.search('ed$',w)]

在words中寻找以ed结尾的单词

^表示以XX开头

$表示以XX结尾

.通配符

sum(1 for w in words if re.search('computer', w))

统计单词出现的数量

[w for w in words if re.search('^[cm][mno][mnt][p][u][t][e][r]$',w)]

[XXX]用于选择3个字符中的一个


· 通配符,匹配所有字符
^abc 匹配以abc 开始的字符串
abc$ 匹配以abc 结尾的字符串
[abc] 匹配字符集合中的一个
[A-Z0-9] 匹配字符一个范围

ed|ing|s 匹配指定的一个字符串(析取)
* 前面的项目零个或多个,如a*, [a-z]* (也叫Kleene 闭包)
+ 前面的项目1 个或多个,如a+, [a-z]+
? 前面的项目零个或1 个(即:可选)如:a?, [a-z]?
{n} 重复n 次,n 为非负整数
{n,} 至少重复n 次
{,n} 重复不多于n 次
{m,n} 至少重复m 次不多于n 次
a(b|c)+ 括号表示操作符的范围


porter = nltk.PorterStemmer()

lancaster = nltk.LancasterStemmer()

[porter.stem(t) for t in words]

词干提取,但是实验后效果不好


wnl = nltk.WordNetLemmatizer()

[wnl.lemmatize(t) for t in words]

词形归并 很好用,处理复数转单数。


规范化文本

set(w.lower() for w in text)

转化为小写


re.split(r' ', raw)

用空格分词

re.split(r'[ \t\n]+', raw)   或者  re.split(r'\s+', raw)

用空格、\t \n等分词

re.split(r'\W+', raw)

把其他字符除去,单词单独分割出来

print re.findall(r"\w+(?:[-']\w+)*|'|[-.(]+|\S\w*", raw)

匹配引号字符让它们与它们包括的文字分开


我们可以使用set(tokens).difference(wordlist),通过比较分词结果与
一个词表,然后报告任何没有在词表出现的标识符,来评估一个分词器。
你可能想先将所有标记变成小写。


' '.join(silly)

把单词变成一个大的字符串



将结果写入文件
我们已经看到了如何读取文本文件(3.1 节)。将输出写入文件往往也很有用。下面的
代码打开可写文件output.txt,将程序的输出保存到文件。
>>> output_file = open('output.txt', 'w')
>>> words = set(nltk.corpus.genesis.words('english-kjv.txt'))
>>> for word in sorted(words):
... output_file.write(word + "\n")


当我们将非文本数据写入文件时,我们必须先将它转换为字符串。正如我们前面所看到
的,可以使用格式化字符串来做这一转换。关闭文件之前,让我们把总词数写入我们的文件。
>>> len(words)
2789
>>> str(len(words))
'2789'
>>> output_file.write(str(len(words)) + "\n")
>>> output_file.close()



内容概要:本文深入探讨了软件项目配置管理在汽车开发领域的应用及其重要性,强调配置管理不仅是版本控制,更是涵盖标识、追溯、结构化等多方面的深度管控。文章通过对比机械产品和软件产品的标签管理,揭示了软件配置管理的独特挑战。配置管理构建了一个“网”状体系,确保软件产品在复杂多变的开发环境中保持稳定和有序。文中还讨论了配置管理在实际工作中的困境,如命名混乱、文档更新不及时、发布流程冗长等问题,并提出了通过结构可视化、信息同源化、痕迹自动化和基线灵活化等手段优化配置管理的具体方法。 适合人群:具备一定软件开发和项目管理经验的工程师及项目经理,尤其是从事汽车电子软件开发的相关人员。 使用场景及目标:①理解配置管理在汽车软件项目中的核心作用;②学习如何通过工具链(如Polarion、JIRA、飞书等)优化配置管理流程;③掌握结构可视化、信息同源化、痕迹自动化和基线灵活化等关键技术手段,提升项目管理水平。 其他说明:配置管理不仅是技术问题,更涉及到项目管理和团队协作。文中强调了工具链的应用和优化的重要性,但同时也指出,工具本身并不能解决所有问题,关键在于如何合理使用工具并不断优化管理流程。文章呼吁读者成为长期主义者,相信时间的力量,持续改进配置管理工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值