将string分解成Python中的字符列表

所以我想要做的就是从.txt文件中吸取一行txt,然后将这些字符分配给一个列表,然后创build列表中所有单独字符的列表。

所以列表的名单。

目前,我已经尝试过:

fO = open(filename, 'rU') fL = fO.readlines() 

这就是所有的即时通讯。 我不知道如何提取单个字符,并将它们分配给一个新的列表。

我想做一些事情:

 fL = 'FHFF HHXH XXXX HFHX' 

^^^这样就是我从.txt文件中得到的那一行。

然后把它变成这个:

 ['F', 'H', 'F', 'F', 'H' ...] 

这是新的列表,每个单独的字符都是自己的。

string是可迭代的(就像列表一样)。

我正在解释你真的想要这样的东西:

 fd = open(filename,'rU') chars = [] for line in fd: for c in line: chars.append(c) 

要么

 fd = open(filename, 'rU') chars = [] for line in fd: chars.extend(line) 

要么

 chars = [] with open(filename, 'rU') as fd: map(chars.extend, fd) 

字符将包含文件中的所有字符。

你可以使用列表来做到这一点:

 fNewList=list(fL); 

请注意,就我所知,行中的任何空格都将包含在此列表中。

我似乎迟了一点,但…

 a='hello' print list(a) # ['h','e','l','l', 'o'] 
 fO = open(filename, 'rU') lst = list(fO.read()) 

因此,要将stringhello作为单个字符添加到列表中,请尝试以下操作:

 newlist = [] newlist[:0] = 'hello' print (newlist) ['h','e','l','l','o'] 

但是,这样做更容易:

 splitlist = list(newlist) print (splitlist) 

或者当使用非常大的文件/列表时,使用一个理想的列表理解,这应该是“计算上更有效率”

 fd = open(filename,'r') chars = [c for line in fd for c in line if c is not " "] fd.close() 

顺便说一句:被接受的答案不占空白…

在Python中,很多东西都是可迭代的,包括文件和string。 遍历文件处理程序给出了该文件中所有行的列表。 对一个string进行迭代可以给出该string中所有字符的列表。

 charsFromFile = [] filePath = r'path\to\your\file.txt' #the r before the string lets us use backslashes for line in open(filePath): for char in line: charsFromFile.append(char) #apply code on each character here 

或者如果你想要一个class轮

 #the [0] at the end is the line you want to grab. #the [0] can be removed to grab all lines [list(a) for a in list(open('test.py'))][0] 

编辑:如agf提到你可以使用itertools.chain.from_iterable

他的方法是更好的,除非你想能够指定哪些行来抓list(itertools.chain.from_iterable(open(filename, 'rU)))

然而,这需要熟悉itertools,结果失去了一些可读性

如果你只想遍历字符,而不关心存储列表,那么我会使用嵌套for循环。 这种方法也是最可读的。

 a='hello world' map(lambda x:x, a) 

['你好,世界']

一个简单的方法是使用函数“map()”。