我有一个以下格式的文本文件:
DELIMITER1
extract me
extract me
extract me
DELIMITER2
Run Code Online (Sandbox Code Playgroud)
我想extract me在.txt文件中提取DELIMITER1和DELIMITER2之间的每个块
这是我目前的不良代码:
import re
def GetTheSentences(file):
fileContents = open(file)
start_rx = re.compile('DELIMITER')
end_rx = re.compile('DELIMITER2')
line_iterator = iter(fileContents)
start = False
for line in line_iterator:
if re.findall(start_rx, line):
start = True
break
while start:
next_line = next(line_iterator)
if re.findall(end_rx, next_line):
break
print next_line
continue
line_iterator.next()
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有250,000个列表,每个列表平均包含100个字符串,存储在10个字典中.我需要计算所有列表的成对相似性(这里的相似性度量不相关;但是,简而言之,它涉及获取两个列表的交集并将结果标准化为某个常量).
我提出的用于成对比较的代码非常简单.我只是使用itertools.product将每个列表与其他列表进行比较.问题是以节省时间的方式在250,000个列表上执行这些计算.对于处理类似问题的任何人:根据以下标准,哪种常用选项(scipy,PyTables)最适合这种情况:
如果我的文本具有标准段落格式(空行后跟缩进),例如文本1,则很容易使用text.split("\n \n")提取段落.
文字1:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sit amet sapien velit, ac sodales
ante. Integer mattis eros non turpis interdum et auctor enim consectetur, etc.
Praesent molestie suscipit bibendum. Donec justo purus, venenatis eget convallis sed, feugiat
vitae velit,etc.
Run Code Online (Sandbox Code Playgroud)
但是如果我有非标准段落格式的文本如文本2怎么办?没有空行和变量前导空格.
文字2:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sit amet sapien velit, ac sodales
ante. Integer mattis eros non turpis interdum et auctor enim consectetur, etc.
Praesent molestie suscipit bibendum. Donec justo purus, …Run Code Online (Sandbox Code Playgroud) 在Weka中使用Kmeans时,可以在模型的结果输出上调用getAssignments()以获取每个给定实例的集群分配.这是一个(截断的)Jython示例:
>>>import weka.clusterers.SimpleKMeans as kmeans
>>>kmeans.buildClusterer(data)
>>>assignments = kmeans.getAssignments()
>>>assignments
>>>array('i',[14, 16, 0, 0, 0, 0, 16,...])
Run Code Online (Sandbox Code Playgroud)
每个簇编号的索引对应于实例.因此,实例0在集群14中,实例1在集群16中,依此类推.
我的问题是:Xmeans有类似的东西吗?我在这里浏览了整个API ,但没有看到类似的东西.
假设我有以下字符串:
(def strg "apple orange apple")
Run Code Online (Sandbox Code Playgroud)
我想要字符串中每个非唯一单词的边界索引.因此苹果的第一次出现应该具有边界指数(0,4),而苹果的第二次出现应该具有边界指数(13,17).
我一直在玩的一种方法是首先在字符串中存储每个字符的索引,然后,对于每个索引n,通过在n-1处查找空格来识别字边界(是的,这错过了开头的 - -string words).如果满足此条件,则迭代下一个k个字符,直到另一个空格被击中---紧邻该空格之前的位置处的字符是第二个边界索引.这个(失败的)代码的第一部分是
(for [ch strg]
(let [indx (int (.indexOf strg (str ch)))]
(cond (= (subs ch indx-1 ) " " )
continue with rest of above-described code logic
Run Code Online (Sandbox Code Playgroud)
任何想法(Clojure,Java或Python都很好)将不胜感激