Python 在理解中拆分列表以执行处理
我想从一个文档中构建两个列表,该文档的格式可能有所不同,但大致应该是两列,并带有一些分隔符。每行为:Python 在理解中拆分列表以执行处理,python,list,split,Python,List,Split,我想从一个文档中构建两个列表,该文档的格式可能有所不同,但大致应该是两列,并带有一些分隔符。每行为: "word1"\t"word2" 比如说。 我的列表应该是“单词列表1”、“单词列表2”。 我想马上建造它们。我知道我可以使用pandas,但出于某种原因(脚本应该能够在没有特定导入的情况下工作,仅在通用库上),我还需要使用常规文档打开 我的尝试是: list_of_word1=[] list_of_word2=[] ((list_of_word1.extend(line.split()[0]
"word1"\t"word2"
比如说。
我的列表应该是“单词列表1”、“单词列表2”。
我想马上建造它们。我知道我可以使用pandas,但出于某种原因(脚本应该能够在没有特定导入的情况下工作,仅在通用库上),我还需要使用常规文档打开
我的尝试是:
list_of_word1=[]
list_of_word2=[]
((list_of_word1.extend(line.split()[0]),list_of_word2.extend(line.split()[1])) for line in open(doc))
生成器没有任何用途,因为extend返回None,因此使用一个不会在那里重用的表单或一开始可能不必要的表单可能会被视为不好。
另外,我想知道如何避免重复使用split函数,每行“ok”2次,但是如果我在更多的列上使用相同的原则,它将变得非常无效
我试图避免重复使用拆分是这样做的:
((list_of_word1.extend(linesplit0),list_of_word2.extend(linesplit1)) for line in open(doc) for (linesplit0,linesplit1) in line.split("\t"))
但这确实不起作用,因为它找不到要解包的元组。我也试过打开starred的包,但没用
((list_of_word1.extend(linesplit0),list_of_word2.extend(linesplit1)) for linesplit0,linesplit1 in open(doc).readline().split("\n").split("\t"))
但这让人觉得有些不满意,太做作了。
你觉得怎么样?事实上,起初我想使用zip,因此使用了生成器。但我把事情搞混了,最后加了
单词列表1=[] 单词列表2=[] 这些都是无用的。 应该做的是:
list_of_word1,list_of_word2=zip(*((line.split()) for line in open(doc)))
这很有魅力。基本问题仍然存在,虽然我可以做我想做的事情,但我仍然有一个问题,那就是如果我必须在一个理解中管理一个拆分的解包,我不知道该怎么做。如果你有什么想法…?实际上,起初我想使用zip,因此是生成器。但我把事情搞混了,最后加了
单词列表1=[] 单词列表2=[] 这些都是无用的。 应该做的是:
list_of_word1,list_of_word2=zip(*((line.split()) for line in open(doc)))
这很有魅力。基本问题仍然存在,虽然我可以做我想做的事情,但我仍然有一个问题,那就是如果我必须在一个理解中管理一个拆分的解包,我不知道该怎么做。如果你有什么想法…?也许是这个
lists = [[] for i in range(<number_of_lists>)]
[[z[0] + [z[1]] for z in zip(lists, line.split())] for line in open(doc)]
list=[]表示范围内的i()
[[z[0]+[z[1]]用于zip中的z(列表,line.split())]用于打开的行(doc)]
(可能需要一些调整)可能是这个
lists = [[] for i in range(<number_of_lists>)]
[[z[0] + [z[1]] for z in zip(lists, line.split())] for line in open(doc)]
list=[]表示范围内的i()
[[z[0]+[z[1]]用于zip中的z(列表,line.split())]用于打开的行(doc)]
(可能需要一些调整)无论使用的分隔符是多少(只要有一些空格!) 例如,如果'temp.txt'是:
word10 word20
word11 word21
word12 word22
word13 word23
word14 word24
我们得到:
list1
['word10', 'word11', 'word12', 'word13', 'word14']
list2
['word20', 'word21', 'word22', 'word23', 'word24']
无论使用的分隔符是什么(只要有一定数量的空格!) 例如,如果'temp.txt'是:
word10 word20
word11 word21
word12 word22
word13 word23
word14 word24
我们得到:
list1
['word10', 'word11', 'word12', 'word13', 'word14']
list2
['word20', 'word21', 'word22', 'word23', 'word24']
您可以与一起使用来实现这一点
示例输入文件data.txt
:
123
苹果橙香蕉
123
a、b、c
代码:
另见:
data.txt
:
123
苹果橙香蕉
123
a、b、c
代码:
另见: