将字符串分解为Python中的字符列表

Fle*_*kie 58 python list readlines

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

所以列表清单.

目前,我已经尝试过:

fO = open(filename, 'rU')
fL = fO.readlines()
Run Code Online (Sandbox Code Playgroud)

这就是我的最爱.我不太清楚如何提取单个字符并将它们分配给新列表.

我想做的事情如下:

fL = 'FHFF HHXH XXXX HFHX'
Run Code Online (Sandbox Code Playgroud)

^^^所以我是从.txt文件得到的行.

然后把它变成这个:

['F', 'H', 'F', 'F', 'H', ...]
Run Code Online (Sandbox Code Playgroud)

^^^和那是新的列表,每个单独的字符都在它自己的上面.

Ell*_*lle 128

您可以使用列表执行此操作:

new_list = list(fL)
Run Code Online (Sandbox Code Playgroud)

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

  • 这实际上是正确的答案。 (5认同)

小智 53

我似乎有点迟了,但......

a='hello'
print list(a)
# ['h','e','l','l', 'o']
Run Code Online (Sandbox Code Playgroud)


kob*_*las 22

字符串是可迭代的(就像列表一样).

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

fd = open(filename,'rU')
chars = []
for line in fd:
   for c in line:
       chars.append(c)
Run Code Online (Sandbox Code Playgroud)

要么

fd = open(filename, 'rU')
chars = []
for line in fd:
    chars.extend(line)
Run Code Online (Sandbox Code Playgroud)

要么

chars = []
with open(filename, 'rU') as fd:
    map(chars.extend, fd)
Run Code Online (Sandbox Code Playgroud)

chars将包含文件中的所有字符.

  • @FlexedCookie [`itertools.chain`](http://docs.python.org/library/itertools.html#itertools.chain)确实是最简单的-chars = list(itertools.chain.from_iterable(open (文件名,“ rU”)))。 (2认同)

cs9*_*s95 13

蟒蛇> = 3.5

3.5 及以上版本允许使用PEP 448 - Extended Unpacking Generalizations

>>> string = 'hello'
>>> [*string]
['h', 'e', 'l', 'l', 'o']
Run Code Online (Sandbox Code Playgroud)

这是语言语法的规范,因此它比调用更快list

>>> from timeit import timeit
>>> timeit("list('hello')")
0.3042821969866054
>>> timeit("[*'hello']")
0.1582647830073256
Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 9

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

newlist = []
newlist[:0] = 'hello'
print (newlist)

  ['h','e','l','l','o']
Run Code Online (Sandbox Code Playgroud)

但是,这样做更容易:

splitlist = list(newlist)
print (splitlist)
Run Code Online (Sandbox Code Playgroud)


Joh*_*ooy 7

fO = open(filename, 'rU')
lst = list(fO.read())
Run Code Online (Sandbox Code Playgroud)


小智 5

或者使用奇特的列表理解,在处理非常非常大的文件/列表时,它应该“计算效率更高”

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

顺便说一句:被接受的答案没有考虑到空格......