在Python中将字符串拆分为多个字符串
大家好,我在想办法在python3中改变这样的字符串在Python中将字符串拆分为多个字符串,python,python-3.x,Python,Python 3.x,大家好,我在想办法在python3中改变这样的字符串 "<word>word</word>" 分成三条线 "<word>" "word" "</word>" 我要把它列在一个清单上 起初我尝试了strip命令,但它只剥离字符串的开头和结尾。然后我尝试了一种更复杂的方法,一次读一个字母,构建单词,然后使用IF语句在any>之后添加一个空格,但我不知道如何在另一个之前添加空格我相信您正在寻找拆分方法 input.split(">") 拆
"<word>word</word>"
分成三条线
"<word>" "word" "</word>"
我要把它列在一个清单上
起初我尝试了strip命令,但它只剥离字符串的开头和结尾。然后我尝试了一种更复杂的方法,一次读一个字母,构建单词,然后使用IF语句在any>之后添加一个空格,但我不知道如何在另一个之前添加空格我相信您正在寻找拆分方法
input.split(">")
拆分后,可能需要重新添加尖括号。
这在某种程度上取决于你是否会一直处于这种模式
如果您的输入遵循变量模式,则使用库可能更好
我相信您正在寻找拆分方法
input.split(">")
拆分后,可能需要重新添加尖括号。
这在某种程度上取决于你是否会一直处于这种模式
如果您的输入遵循变量模式,则使用库可能更好
您应该为此使用xml解析器。下面是一个解析示例
>>> import xml.etree.ElementTree as ET
>>> xml = '<root><word1>my_word_1</word1><word2>my_word_2</word2><word3>my_word_3</word3></root>';
>>> tree = ET.fromstring(xml);
>>> for child in tree:
... print child.tag, child.text
...
word1 my_word_1
word2 my_word_2
word3 my_word_3
>>>
一旦读取了这些值,就可以很容易地将它们放入堆栈中 您应该为此使用xml解析器。下面是一个解析示例
>>> import xml.etree.ElementTree as ET
>>> xml = '<root><word1>my_word_1</word1><word2>my_word_2</word2><word3>my_word_3</word3></root>';
>>> tree = ET.fromstring(xml);
>>> for child in tree:
... print child.tag, child.text
...
word1 my_word_1
word2 my_word_2
word3 my_word_3
>>>
一旦读取了这些值,就可以很容易地将它们放入堆栈中 带有字符串替换方法的正则表达式有效:
>>> import re
>>> s = "<word1></word1> <word2>worda</word2> <word3>wordb</word3> <word4></word4>"
>>> re.findall("\S+", s.replace(">", "> ").replace("<", " <"))
['<word1>', '</word1>', '<word2>', 'worda', '</word2>', '<word3>', 'wordb', '</word3>', '<word4>', '</word4>']
>>>
或者,不使用正则表达式的替代解决方案:
>>> s = "<word1></word1> <word2>worda</word2> <word3>wordb</word3> <word4></word4>"
>>> s.replace(">", "> ").replace("<", " <").split()
['<word1>', '</word1>', '<word2>', 'worda', '</word2>', '<word3>', 'wordb', '</word3>', '<word4>', '</word4>']
>>>
不过,正则表达式解决方案允许对匹配进行更多控制,您可以向表达式中添加更多内容来真正简化它
但是,请注意,只有当数据与给出的示例类似时,这些方法才会起作用。带有字符串替换方法的正则表达式起作用:
>>> import re
>>> s = "<word1></word1> <word2>worda</word2> <word3>wordb</word3> <word4></word4>"
>>> re.findall("\S+", s.replace(">", "> ").replace("<", " <"))
['<word1>', '</word1>', '<word2>', 'worda', '</word2>', '<word3>', 'wordb', '</word3>', '<word4>', '</word4>']
>>>
或者,不使用正则表达式的替代解决方案:
>>> s = "<word1></word1> <word2>worda</word2> <word3>wordb</word3> <word4></word4>"
>>> s.replace(">", "> ").replace("<", " <").split()
['<word1>', '</word1>', '<word2>', 'worda', '</word2>', '<word3>', 'wordb', '</word3>', '<word4>', '</word4>']
>>>
不过,正则表达式解决方案允许对匹配进行更多控制,您可以向表达式中添加更多内容来真正简化它
但是,请注意,只有当数据与给出的示例类似时,这些功能才会起作用。拆分功能更接近您所需的功能,但仍然不准确。如果您试图解析html/xml,那么应该使用解析库。这是一项不那么琐碎的任务。这就是输入数据的范围吗?我正在读取一个xml文件,那么您可能应该使用xml解析器。Python在xml模块中提供了几种不同的语法。如果没有平衡或格式良好的xml,使用xml解析器将自动抛出一些错误。。。你不想走分裂字符串的路线——特别是如果你在元素上有属性,这会使处理变得更复杂等等。分裂函数更接近你需要的,但仍然不准确。如果您试图解析html/xml,那么应该使用解析库。这是一项不那么琐碎的任务。这就是输入数据的范围吗?我正在读取一个xml文件,那么您可能应该使用xml解析器。Python在xml模块中提供了几种不同的语法。如果没有平衡或格式良好的xml,使用xml解析器将自动抛出一些错误。。。您不希望尝试拆分字符串-尤其是如果元素上的属性会使处理变得更为棘手,等等…我不确定在这种情况下,如果OP提供输入,这将生成输出:['对,这就是为什么我提到他必须在拆分后重新添加尖括号。他需要一个语句,说明如果一个单词以左尖括号开头,然后在结尾添加一个右尖括号。是的,他必须重新拆分不是以一开头的秒部分-创建一个噩梦般的解析算法。啊!好的,我知道ow您来自何处。我不确定这在这种情况下是否有效,在OP提供输入的情况下,这将产生输出:['对,这就是为什么我提到他必须在拆分后重新添加尖括号。他需要一个语句,说明如果一个单词以左尖括号开头,然后在结尾添加一个右尖括号。是的,他必须重新拆分不是以一开头的秒部分-创建一个噩梦般的解析算法。啊!好的,我知道你从哪里来。