拆分列表并打印所需的输出

时间:2015-05-30 09:11:40

标签: python list parsing text split

import re

foo='''"a","b","c","aaa":"sdlfjlasjdfljas"'''

list=re.split('\:,\';\"',foo)
i = 0
for word in list:
    newWord = word
    newWord.split(':')

我目前正试图将字符串foo与逗号,冒号和括号等不同的参数分开......等等。

我目前能够将字符串拆分一次,它在一个索引中提供字符串"aaa":"alsjflajlsdjf"。我希望能够通过冒号将其拆分,并在if语句中使用aaa查找word.find以获取下一个字符串并将其打印出来。所以它会打印出胡言乱语。

我已成功使用for循环查找aaa部分,但我无法打印出乱码。感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您可以根据无字字符(\W)简单地拆分字符串:

>>> foo='''"a","b","c","aaa":"sdlfjlasjdfljas"'''
>>> 
>>> re.split(r'\W',foo)
['', 'a', '', '', 'b', '', '', 'c', '', '', 'aaa', '', '', 'sdlfjlasjdfljas', '']

或者,对于拒绝空字符串,您可以使用re.findall查找仅包含字词字符的字词(\w):

>>> l=re.findall(r'\w+',foo)
['a', 'b', 'c', 'aaa', 'sdlfjlasjdfljas']

您可以使用next函数中的生成器表达式来获取长度不止一个的第一个单词:

>>> next(w for w in l if len(w)>1)
'aaa'

或者使用列表理解来获取所有这些:

>>> [w for w in l if len(w)>1]
['aaa', 'sdlfjlasjdfljas']

注意:如果要使用正则表达式拆分包含某些字符的字符串,可以使用以下配方:

  • 使用字符类:[:,.;]
  • 使用逻辑或:':|,|\.|;'

但是使用带有re.split的pip(' |')可能包含空字符串。在这种情况下,您可以使用字符类。

答案 1 :(得分:1)

你的正则表达式应该是这样的:

[,;:]

方括号包括您要拆分的所有字符。

答案 2 :(得分:1)

您可以使用str.translate替换要用逗号拆分的任何字符,然后用逗号分隔:

tbl= str.maketrans({ord(ch):"," for ch in "();:"})
print("\n".join(foo.translate(tbl).split(",")))

"a"
"b"
"c"
"aaa"
"sdlfjlasjdfljas"

我不明白为什么你要分割所有的单词,如果你想要的只是aaa之后的单词,str.find如果你拆分字符串不会对你有多大帮助,你可以拆分在使用find获取aaa的索引后,从那里得到下一个单词。

ind = foo.index("aaa")
if ind != -1:
    ....