- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有一个文件:
NAME,ANDREW,AGE 20, BD 1979
NAT ENGLISH
OCC LONDON
INC 200$
NAME,SVEN,AGE 20, BD 1979
NAT SWEDISH
OCC FALUN
INC 100$
NAME,HANS,AGE 30, BD 1988
NAT GERMAN
OCC BERLIN
NOTE, HANDSOME ONE
NAME,LUDOVIC,AGE 40, BD 1955
NAT FRENCH
OCC BORDEAUX
INC 5000$
INTERESTS, FISHING
NAME,PETER
NAT DUTCH
SUMMARY,AGE:20,BD:1979,NAT:DUTCH,OCC:TILBURG,INC:1000$
我尝试将它分成 block ,其中每个 block 都以“NAME”字样开头,并且包含未知行数直到下一个“NAME”,当然最后一个 block 在文件末尾结束。例如,我想存储在列表列表中的 block ,至少这是我的第一次尝试。一般来说,我需要稍后单独迭代每个 block ,因此存储方法是为以后的目标服务的。
我迄今为止的代码如下:
start = 'NAME,'
end = 'NAME,'
flag_append = False
my_list = []
for line in open('sample_csv.csv').readlines():
if line.startswith(start):
data = line[len(start):]
flag_append = True
my_list.append(data)
elif flag_append:
temp = []
temp.append(line)
my_list.append(temp)
elif line.startswith(end):
flag_append = False
break
print my_list
但这还不是我想要的。
我想要的输出是:
[['ANDREW,AGE 20, BD 1979\n','NAT ENGLISH\n','OCC LONDON\n', 'INC 200$\n'],['SVEN,AGE 20, BD 1979\n','NAT SWEDISH\n','OCC FALUN\n','INC 100$\n'],['HANS,AGE 30, BD 1988\n', 'NAT GERMAN\n', 'OCC BERLIN\n', 'NOTE, HANDSOME ONE\n'], ['LUDOVIC,AGE 40, BD 1955\n', 'NAT FRENCH\n', 'OCC BORDEAUX\n', 'INC 5000$\n', 'INTERESTS, FISHING\n'], ['PETER\n', 'NAT DUTCH\n', 'SUMMARY,AGE:20,BD:1979,NAT:DUTCH,OCC:TILBURG,INC:1000$']]
或示意性地:
[[chunk],[chunk],[chunk],[chunk]]
提前致谢。
编辑 26.10.2012
感谢大家提供非常有帮助的答案。我选择了 Kzhi 的答案,因为他的解决方案没有省略 splitting 关键字。抱歉,我没有在我的问题中提到这个要求,你的答案依赖于我笨拙的代码,结果省略了关键字。干杯!
最佳答案
我认为这将是一个优雅的解决方案:
token = 'foo'
chunks = []
current_chunk = []
for line in open('sample_csv.csv'):
if line.startswith(token) and current_chunk:
# if line starts with token and the current chunk is not empty
chunks.append(current_chunk[:]) # add not empty chunk to chunks
current_chunk = [] # make current chunk blank
# just append a line to the current chunk on each iteration
current_chunk.append(line)
chunks.append(current_chunk) # append the last chunk outside the loop
所以有内容的文件:
foo
asdf
asdf
foo
foo
asdf
asdf
fooo
你会得到这样的结果:
[
['foo\n', 'asdf\n', 'asdf\n'],
['foo\n'],
['foo\n', 'asdf\n', 'asdf\n'],
['fooo\n']
]
关于Python:如何根据标题词的出现将文件分成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19575702/
我有以下案例要解决。 在短语中突出显示关键字的 Javascript 方法。 vm.highlightKeywords = (phrase, keywords) => { keywords =
我要匹配文本中的所有美元符号单词。例如,"Hello $VARONE this is $VARTWO"可以匹配$VARONE和$VARTWO。 正则表达式应该是/\$(\w+)/g,但是当我在Dart
在 redux 中,对于将状态作为参数、更改状态并返回新状态的特定操作,您会在 switch 语句中调用什么函数? function reducer(state = DEFAULT_STATE, ac
在 MySQL 5.1 中,我将一个字段命名为“Starting”。但是,每次我使用 SQL 查询时,它都会说无效的 SQL 语法。经过一些谷歌搜索,我发现 STARTING 是一个保留的 SQL 词
我必须使用函数 isIn(secretWord,lettersGuessed) 从列表中找到密码。在下面发布我的代码。 def isWordGuessed(secretWord, lettersGue
一段时间以来,我一直无法找到两个字符串中最长的常用词。首先我想到了用“isspace”函数来做这件事,但不知道如何找到一个常用词。然后我想到了“strcmp”,但到目前为止我只能比较两个字符串。我在想
我目前正在尝试制作一种“单词混合器”:对于两个给定的单词和指定的所需长度,程序应返回这两个单词的“混合”。然而,它可以是任何类型的混合:它可以是第一个单词的前半部分与第二个单词的后半部分相结合,它可以
如果 After 之后(逗号之前)没有 -ing 词,我想匹配它。所以 After 和逗号之间不应该有 -ing 词。 所需的匹配项(粗体): After sitting down, he began
我一直在试验 Stanford NLP 工具包及其词形还原功能。我很惊讶它如何使一些词词形还原。例如: depressing -> depressing depressed -> depressed
js 并尝试根据 [这里] 中的示例代码来做词云:https://github.com/jasondavies/d3-cloud .我想做的是单词的字体大小是基于数组中单词的频率。例如我有 [a,a,
我正在处理一个文本分类问题(在法语语料库上),并且正在试验不同的词嵌入。我对 ConceptNet 提供的内容非常感兴趣,所以我决定试一试。 我无法为我的特定任务找到专门的教程,所以我听取了他们的建议
当我在文本中搜索时,我输入 C-s,然后输入单词,然后一次又一次地输入 C-s,光标前进到找到的单词的下一个位置。问题是,一旦我转到下一个单词,我无法在按钮处编辑迷你缓冲区中的搜索单词,如果我按 Ba
我正在尝试按照以下结构运行这个 maven Hello Word: ├── pom.xml └── src └── Main.java 使用pom.xml设置: 4.0.0
所以,从我可以开始的.. 我正在使用 OCR。该脚本非常适合我的需要。它检测单词的准确性对我来说还可以。 这是结果:附加图像 100% 准确。 from PIL import Image import
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
这是细节,但我想知道为什么会这样。 示例代码: Class klasa = Enum.class; for(Type t : klasa.getGenericInterfaces()) Syst
我在用: var header = ""+ "Export HTML to Word Document with JavaScript"; var footer = ""; /
我有一个程序可以像这样将数据打印到控制台(以空格分隔): variable1 value1 variable2 value2 variable3 value3 varialbe4 value4 编辑:
我有一个程序可以像这样将数据打印到控制台(以空格分隔): variable1 value1 variable2 value2 variable3 value3 varialbe4 value4 编辑:
最近我在查看与goliath相关的一些代码时,偶然在Ruby代码中看到了这个词use。 , 中间件等。看起来它不同于include/extend, and require. 有人可以解释为什么存在这个
我是一名优秀的程序员,十分优秀!