我正在尝试将python中的字符串拆分为字符列表。我知道在python中有很多方法可以做到这一点,但是在某些情况下,这些方法并不能给我期望的结果。
当我有特殊字符(例如'\ t')明确地写在字符串中时,就会发生问题(我并不是说真正的制表符)。
例:
string = " Hello \t World."
我需要的输出是:
list_of_chars = [' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '\', 't', ' ', 'W', 'o', 'r', 'l', 'd', '.']
但是,当我使用此问题中给出的方法时,我得到一个包含'/ t'作为整个字符串的列表-不分开。
例:
> list(string)
> ['H', 'e', 'l', 'l', 'o', 'w', ' ', '\t', ' ', 'W', 'o', 'r', 'l', 'd', '.']
我想知道为什么会这样以及如何得到我想要的东西。
您可以相应地替换您的字符串:
import itertools
txt = " Hello \t World."
specials = {
'\a' : '\\a', # ASCII Bell (BEL)
'\b' : '\\b', # ASCII Backspace (BS)
'\f' : '\\f', # ASCII Formfeed (FF)
'\n' : '\\n', # ASCII Linefeed (LF)
'\r' : '\\r', # ASCII Carriage Return (CR)
'\t' : '\\t', # ASCII Horizontal Tab (TAB)
'\v' : '\\v' # ASCII Vertical Tab (VT)
}
# edited out: # txt2 = "".join([x if x not in specials else specials[x] for x in txt])
txt2 = itertools.chain(* [(list(specials[x]) if x in specials else [x]) for x in txt])
print(list(txt2))
输出:
[' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '\\', 't', ' ', 'W',
'o', 'r', 'l', 'd', '.']
列表理解看起来更“积极”,使用list(itertools.chain(*[...]))
代替list("".join([...]))
应该更高效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句