Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将字符串拆分为多个字符串_Python_Python 3.x - Fatal编程技术网

在Python中将字符串拆分为多个字符串

在Python中将字符串拆分为多个字符串,python,python-3.x,Python,Python 3.x,大家好,我在想办法在python3中改变这样的字符串 "<word>word</word>" 分成三条线 "<word>" "word" "</word>" 我要把它列在一个清单上 起初我尝试了strip命令,但它只剥离字符串的开头和结尾。然后我尝试了一种更复杂的方法,一次读一个字母,构建单词,然后使用IF语句在any>之后添加一个空格,但我不知道如何在另一个之前添加空格我相信您正在寻找拆分方法 input.split(">") 拆

大家好,我在想办法在python3中改变这样的字符串

"<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提供输入的情况下,这将产生输出:['对,这就是为什么我提到他必须在拆分后重新添加尖括号。他需要一个语句,说明如果一个单词以左尖括号开头,然后在结尾添加一个右尖括号。是的,他必须重新拆分不是以一开头的秒部分-创建一个噩梦般的解析算法。啊!好的,我知道你从哪里来。