首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:如何定位唯一的字符串并解析与定位到的字符串相关的多行文本?

Python:如何定位唯一的字符串并解析与定位到的字符串相关的多行文本?
EN

Stack Overflow用户
提问于 2014-09-16 15:17:02
回答 3查看 1.3K关注 0票数 0

我正在尝试解析一个非常大的.txt文件(300,000+行)中的多行文本块,并将这些文本块写入一个新文件。我需要的每个文本块都有42行,并且每个42行文本块的第一行都以唯一的语言名称开头。

我已经创建了一个文本文件,在单独的行中列出了我需要的每个唯一的语言名称。我已经在这个文本文件中创建了一个列表,并希望循环遍历该列表以在主文件中找到每个唯一的语言名称,然后复制特定于该唯一名称的42行,并将这42行文本块写入到一个新文件中。

我是编程/Python的新手,我能找到的类似问题不足以解决我的问题,所以请原谅我的无知。我被困在注释部分#伪代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sys import argv

script, from_file, to_file = argv

# Opens input/output files
infile = open(from_file).read()
outfile = open(to_file, 'w')


# Appends all unique language names into a list
langList = []
with open('language-list.txt') as file:
    for language in file:
        name = language.strip()
        langList.append(name)

# Pseudo code of what I want to do
for l in langList:
    find l in infile
    copy 42 lines beginning with match l
    write to outfile

以下是language-list.txt文件的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CENTRAL_GOJAL_WAKHI
TURKMEN

可在此处下载主文本文件:http://email.eva.mpg.de/~wichmann/listss16.zip

上面的两种示例语言可以在这个文本文件中找到。尽管我对解析大约1000种语言很感兴趣,但任何关于如何在两种语言中实现这一点的建议都足以推动我朝着正确的方向前进。

提前谢谢你!

EN

回答 3

Stack Overflow用户

发布于 2014-09-16 15:41:33

我通常不这样做,但由于我对语言学和语言学家有弱点,你可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

swadesh = {}
lang = None

with open('/tmp/listss16.txt') as fp:
    for line in fp:
        m = re.match(r'(\d+)\s+\w+\s+([^/]+)', line)
        if m:
            if lang:
                swadesh[lang][int(m.group(1)) - 1] = m.group(2).strip()
            continue
        m = re.match(r'([A-Z]\w+){', line)
        if m:
            lang = m.group(1)
            swadesh[lang] = [''] * 100
            continue

这将创建dict lang_name : list,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LITHUANIAN : ['aS', 'yus, tu', 'mes', 'Sitas', 'anas, tas', 'kas, kuris', 'kas', 'ne', 'visas, visi', 'daugelis', 'vienas', 'du, div', 'didelis, platus', 'ilgas, letas', 'maZas, maZutis', 'moteris', 'Zmogus', 'asmuo, Zmogus', 'Zuvis', 'paukStis', 'Suo', 'utele', 'medis', 'sekla, grudas', 'lapas', 'Saknis', 'Zieve', 'oda, kailis', 'mesa, kunas', 'krauyas, giminy~ste', 'kaulas', 'taukai, riebalai', 'kiauSinis', 'ragas', 'uodega, eile', 'plunksna', 'palukas', 'galva', 'ausis', 'akis', 'nosis, nuyautimas', 'burna', 'dantis', 'lieZuvis', 'nagas', 'koya, peda', 'kelis', 'ranka', 'pilvas, skramdis', 'kaklas', 'krutine', 'Sirdis', 'kepeny~s', 'ger, girtau', 'valgy~, iSes', 'kas, gel', 'maty~, Ziure', 'girde, iSklausy~ti', 'Zino, paZin', 'miegas', 'mir', 'uZmuS, nuZudy~', 'plaukio', 'skris, pralek', 'ei, vaikSCio', 'atei, atvy~k', 'gule, bu', 'sede, posedZiau', 'stove, atsisto', 'duo, dovano', 'nuomone, Zodis', 'saule', 'menulis', 'ZvaigZde, Sviesuly~s', 'vanduo', 'lietus', 'akmuo', 'smely~s', 'Zeme', 'debesy~s', 'dumai', 'ugnis, liepsna', 'pelenai', 'deg', 'takas, kelelis', 'kalnas', 'raudonas, paraudes', 'Zalias, nesubrendes', 'geltonas', 'baltas', 'yuodas, tamsus', 'naktis', 'karStas', 'Saltas, abeyingas', 'pilnas, visas', 'nauyas, SvieZias', 'geras, malonus', 'apskritas, apvalus', 'sausas', 'vardas']
KHWARSHI : ['do', 'mo', 'ilo', '', '', '', '', '', '', '', 'hos', 'qw"X$inE', '', '', '', '', '', '%Xadam', 'CuXa', '', 'XXw$E', 'noc"o', 'Xon', '', 'tL~ib', '', '', 'qX~al', '', 'e*q"X~o', 'tL~ozol', '', '', 'SEly~u', '', '', '', '', 'a*hX~a', 'Ezol', 'ma*ni', '', 's3l', 'muc', '', '', 'gurtu', 'litL"a', '', '', 'koko', '', 'Zubu', 'c"oda', '', '', 'aka', 'tuqX~a', '', '', 'uha', '', '', '', '', 'ok"a', '', '', '', '', '', 'buqXX$', '', 'ca', 'Lo', '', 'Xur', '', '', '', '', 'c"o', '', '', 'hu*nE', 'hu*n', '', '', '', '', '', 'rELa', '', '', 'lec"u', 'uc"nu', '', '', '', 'co']
MANDARIN_2 : ['wo', 'ni', 'women', '', '', '', '', '', '', '', 'yi', 'er', '', '', '', '', '', 'ren', 'yu', '', '%gow', 'Sizi, towSi', 'Su', '', 'yezi', '', '', 'pi', '', 'Sie, Swe', 'gu tow', '', '', 'jiao', '', '', '', '', 'erduo', 'yanjiN', 'bizi', '', 'ya, yaCi', 'Setow', '', '', 'Si, Sigai', 'Sow', '', '', 'rufaN', '', 'gan, ganzaN', 'he', '', '', 'jian', 'tiN', '', '', 'si', '', '', '', '', 'lai', '', '', '', '', '', 'taiyaN', '', 'SiNSiN', 'Sui', '', 'Sitow', '', '', '', '', 'huo', '', '', 'xiaolu', 'Ciu, CiuliN', '', '', '', '', '', 'ye', '', '', 'man', 'Sin', '', '', '', 'miNzi, SiNmiN']
WARAO : ['ine', 'zatu', 'oko', 'tamaha', 'tai', 'sina', 'bitu', 'XXX', 'kokotuka', 'era', 'hishaka', 'manamu', 'irija', 'bumija', 'sanuka', 'tija', 'nibora', 'warau', 'homakaba', 'domu', 'beroro', 'ami', 'dau', 'amu', 'dau aroko', 'XXX', 'ahoro', 'horo', 'toma', 'hotu', 'muhu', 'toi', 'ahi', 'akw~ahoi', 'ahu', 'huhi', 'hio', 'kw~a', 'kohoko', 'mu', 'hikoto', 'doko', 'i', 'hono', 'kahanobo, mohusi', 'omu', 'mukuru', 'moho', 'obono', 'do', 'ami', 'kobe', 'mahi', 'takatakaza', 'nahoroza', 'basia', 'mia', 'nokoza', 'naminaza', 'ubaza', 'wabaza', 'naza', 'soitia', 'nebiria', 'naria, za*tia', 'nauza', 'zahia', 'duhuya', 'kanamuya', 'muaza', 'dibu', 'za', 'waniku', 'kura', 'ho', 'naha', 'hozo', 'huhu', 'hobahi', 'nahamutu', 'hehuku', 'hekunu', 'hekohuhu', 'ehohuya', 'hohisi', 'hotakw~ai', 'simo*', 'hebura', 'simosimo, johene', 'hokera', 'anera', 'ima', 'ihija', 'daitera, dehorohera', 'kw~atai', 'hijo', 'zakera', 'kobera', 'nauwaha', 'wai']
KAREN_GEBA : ['ya', 'na', 'pwa', '', '', '', '', '', '', '', 't3bw~a', 'Ci bw~a', '', '', '', '', '', 'by~a', 'ta ph~o', '', 'thw$i*7', 'tr~o7', 'tr~o7', '', 'La*7', '', '', '3ph~3i7', '', 'tr~wi*7', 'khw$i*7', '', '', 'ta 73no', '', '', '', '', 'k3ni7 ku', 'ka ka dr~u', 'k3ni kh~3de', '', 'kotr~o', 'k3pli', '', '', 'kh~a lo ma*7', 's3 kh~o', '', '', 'XXX', '', 'k3to tr~a*7', 'o', '', '', '3sa Ci', 'k3tr~a ha', '', '', 'tr~i', '', '', '', '', 'ke ba*7', '', '', '', '', '', 'lu mu', '', 'sya', 'Ci', '', 'lo7', '', '', '', '', 'mi7', '', '', 'kla*7 do7', 'kh~o la7', '', '', '', '', '', 'lu mu na kh~a, na kh~a', '', '', 'pw~a th~a*7', '3tr~a', '', '', '', 'k3sh~o7 mi']

从这个字典中很容易提取出所需的语言或单词。

票数 1
EN

Stack Overflow用户

发布于 2014-09-16 15:43:03

  1. 300000行文本不是很多,可以轻松放入几个100MB的大小。除非这是时间敏感的,否则就做些愚蠢的事情,把你所有的语言名称load it all into a list.
  2. Collect到字典中,而不是列表中。

然后遍历这个巨大的文本文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i, current_line in input_list:
    if current_line in languages:
        language_block = input_list[i:i + 43]
        # do something with it

一旦有了这个文件,并且希望最小化内存消耗,就不要加载整个文件,而是使用continue跳过42行,同时迭代所有行。

票数 0
EN

Stack Overflow用户

发布于 2014-09-16 15:44:24

通过在打开的文件上使用readline(),您可以拥有行的索引,因此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
infile = open('listss16.txt')
lines = infile.readlines()

for line in range(0,len(lines)):
    for l in langlist:
        if l in lines[line]:
            outfile.write(lines[line:line+42])

或者用一个线条来写一遍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
out = [lines[line:line+42] for l in langlist for line in range(0,len(lines)) if l in lines[line]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25872543

复制
相关文章
anjularjs ng-include造成的作用域问题
使用angularjs开发,有时候页面太大,代码行数太多,这时候会造成代码难以维护,以及查找和阅读代码变得越来越困难。而html页面就可以用ng-include将代码代码进行分页,但是ng-include自带作用域,很可能造成网页无法造成运行的后果。
陨石坠灭
2018/10/19
7500
全局作用域、函数作用域、块级作用域的理解
ES6中新增的概念,在ES5中是没有的,ES5中没有? 没有的时候我们代码也写的好好的,现在新增的概念,我不用不行吗? 来,拋一个典型的问题出来,你就明白块级作用域出现的重要性了。
yuezhongbao
2019/02/26
3.1K0
全局作用域、函数作用域、块级作用域的理解
Rust中的作用域及作用域的规则
所有权是 Rust 最独特的特性,它使 Rust 能够在不需要 GC 的情况下保证内存安全。在本章中,我们将讨论所有权以及几个相关特性:借用/切片,以及 Rust 如何在内存中布局数据。
端碗吹水
2022/06/02
4K1
Rust中的作用域及作用域的规则
作用域和作用域链的简单理解
javascript采用的静态作用域,也可以称为词法作用域,意思是说作用域是在定义的时候就创建了, 而不是运行的时候。此话对于初学者很不好理解,看看下面这个例子:
ZEHAN
2020/09/23
8180
作用域和作用域链的简单理解
JavaScript中的作用域和作用域链
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例子:
刘亦枫
2020/03/19
2.2K0
JavaScript中的作用域和作用域链
作用域及作用域链的解释说明
javascript中作用域是指变量与函数可访问的范围。作用域分为两类,一种是全局作用域,一种是局部作用域。全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义。局部变量是在函数体内声明而且只作用在函数体内部以及该函数体的子函数的变量。下面我们对全局作用域和局部作用域来做一个深入的理解。
OECOM
2020/07/02
1.2K0
作用域及作用域链的解释说明
使用python批量检查url的有效性
因为工作需要,之前用python写了一些批量校验url有效性的小脚本,但并不全面,健壮性较差,现把之整理一下,代码如下:
py3study
2020/01/08
4K0
变量的作用域
变量的作用域 在JavaScript中,根据作用域的不同,变量可以分为两种: 全局变量 局部变量 1. 全局变量 在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)。 全局变量在代码的任何位置都可以使用 在全局作用域下 var 声明的变量 是全局变量 特殊情况下,在函数内不使用 var 声明的变量也是全局变量(不建议使用) 2.局部变量 在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量) 局部变量只能在该函数内部使用 在函数内部 var 声明的变量是
清出于兰
2020/10/26
7470
变量的作用域
打算装起来体验一下最初发布的版本, 但是发现只有 Windows 版本, 所以我就装了个 Windows10的虚拟机, 就在我打算安装的时候, 发现:
烟草的香味
2021/01/20
9490
变量的作用域
作用域插槽的使用(四个作用域的区别)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129125.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/30
4410
作用域插槽的使用(四个作用域的区别)
【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
在 Groovy 脚本中 , 定义两个变量 , 一个使用 def 声明 , 一个直接声明变量 ;
韩曙亮
2023/03/30
1.3K0
【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
JavaScript的作用域和块级作用域概念理解
运行这段代码,会出现“use an undefined variable:j”的错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。
IMWeb前端团队
2019/12/04
6610
【说站】js变量的作用域如何使用
2、函数外部自然不能读取函数内的局部变量。请注意,当函数内部声明变量时,务必使用var命令,否则会声明变量。
很酷的站长
2022/11/23
1.9K0
【说站】js变量的作用域如何使用
HTML 表单 (form) 的作用解释
参考网址: 《HTML中form表单作用解释》 表单在网页中主要负责的是数据采集功能,一个表单基本由三部分组成: 表单标签:这里面包含了处理表单数据所用 CGI (Common Ga
剑影啸清寒
2018/01/02
5.4K0
JavaScript的作用域和块级作用域概念理解
本文介绍了JavaScript的作用域和块级作用域的概念,以及如何使用闭包来模拟块级作用域,并给出了相应的示例。
IMWeb前端团队
2017/12/29
9000
作用域与作用域链
通常来说,一段程序代码中所用到的名字并不总是有效或可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域scope。当一个方法或成员被声明,他就拥有当前的执行上下文context环境。在有具体值的context中,表达式是可见也都能够被引用。如果一个变量或者其他表达式不在当前的作用域,则将无法使用。作用域也可以根据代码层次分层,以便子作用域可以访问父作用域,通常是指沿着链式的作用域链查找,而不能从父作用域引用子作用域中的变量和引用。
WindRunnerMax
2020/08/27
1.9K0
java作用域-什么是JavaScript作用域、作用域链?
作用域、作用域链也是面试中出镜率很高的问题之一java作用域java作用域,同时也是中最重要的基础概念之一。
宜轩
2022/12/29
1.9K0
bean的作用域解析
       2.指定作用域的目的是 存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高速缓存的对象。(本身的理念就是以空间换时间的思维,创建步骤繁杂,而且频繁用到,我就存起来,下次用的时候就不用了创建了)
忧愁的chafry
2022/10/30
3910
spring bean的作用域
Bean的作用域 参考:spring FrameWork官方文档 spring4.x中官方有7中作用域,如果使用的是applicationContext作为容器的话就只用5中作用域 下面的其中作用域为
用户1418372
2018/09/13
1.2K0
spring bean的作用域
一、变量的作用域
通常所说的整型,实际指的是如下四种类型: byte:一个byte型整数在内存里占8位,表数范围是:-128到127. short:一个short型整数在内存里占16位,表数范围是:-32768到32767. int:一个int型整数在内存里占32位,表数范围是:-2147483648到2147483647. long:一个long型整数在内存里占64位,表数范围是:-9223372036854775808到9223372036854775807.
CN_Simo
2022/05/10
6390
一、变量的作用域

相似问题

NG包含作用域

10

如何从父html访问ng包含的html的表单?

10

从父作用域访问子作用域

12

AngularJS:如何从父作用域访问子作用域对象?

11

如何从父作用域获取参数到子作用域?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文