拆分列表并打印所需输出

2024-04-26 14:53:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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语句中使用word.find找到aaa,以获取下一个字符串并将其打印出来。所以它会打印出乱七八糟的内容。你知道吗

我已经成功地使用for循环来查找aaa部分,但是我无法打印出乱码。提前谢谢你的帮助。你知道吗


Tags: 字符串inimportreforfoolistword
3条回答

可以使用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:
    ....

正则表达式应如下所示:

[,;:]

方括号包括所有要拆分的字符。你知道吗

您可以简单地基于非单词字符(\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函数中使用get第一个长度大于1的单词和生成器表达式:

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

或者用一个列表来理解它们:

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

注意:如果您想用regex拆分包含一些字符的字符串,可以使用以下方法:

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

但是将pip(“|”)与re.split一起使用可能会包含空的字符串.in在这种情况下,你可以使用字符类。你知道吗

相关问题 更多 >