Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 - Fatal编程技术网

在Python中重建字符串

在Python中重建字符串,python,Python,我想做一些类似的事情: temp=a.split() #do some stuff with this new list b=" ".join(temp) 其中a是原始字符串,b是修改后的字符串。问题是,在执行此类方法时,新行会从新字符串中删除。那么,我怎样才能在不删除换行符的情况下做到这一点呢?我真的不明白你的问题。你能举例说明你想做什么吗 不管怎样,这可能会有帮助: b = '\n'.join(a) 首先,我想当你说 b = " ".join(a) 你是说 b = " ".join(t

我想做一些类似的事情:

temp=a.split()
#do some stuff with this new list
b=" ".join(temp)

其中a是原始字符串,b是修改后的字符串。问题是,在执行此类方法时,新行会从新字符串中删除。那么,我怎样才能在不删除换行符的情况下做到这一点呢?

我真的不明白你的问题。你能举例说明你想做什么吗

不管怎样,这可能会有帮助:

b = '\n'.join(a)

首先,我想当你说

b = " ".join(a)
你是说

b = " ".join(temp)
当调用split()而不指定分隔符时,函数会将任意长度的空白解释为分隔符。我相信空格中包含换行符,所以当你拆分字符串时,这些换行符会消失。尝试显式地将分隔符(例如简单的“”空格字符)传递给split()。如果一行中有多个空格,使用此方式拆分将删除所有空格,并在返回的列表中包含一系列“”空字符串


要恢复原始间距,只需确保从split()中用作分隔符的同一字符串调用join(),并且不从中间字符串列表中删除任何元素。

您需要使用正则表达式来拆分字符串。生成的匹配对象可以为您提供匹配各种子表达式的零件的字符范围

由于可能有任意多个部分由空格分隔,因此必须在字符串中的不同起点多次匹配字符串


如果这个答案让您感到困惑,我可以查找适当的参考资料并输入一些示例代码。我并没有真正记住所有的库,只是记住了它们的功能。:-)

这取决于您要拆分的内容

对于默认拆分,使用“\n”和“”作为分隔符,可以使用

a.split(" ") 
如果您只想将空格作为定界符


我想在你的第三行中,你的意思是
join(temp)
,而不是
join(a)

要拆分并保留精确的“拆分器”,您需要使用带有捕获组的函数(或拆分对象的方法):

>>> import re
>>> f='tanto va\nla gatta al lardo'
>>> re.split(r'(\s+)', f)
['tanto', ' ', 'va', '\n', 'la', ' ', 'gatta', ' ', 'al', ' ', 'lardo']
你只需从
re.split
中获得的片段位于索引0、2、4。。。虽然奇数索引具有“分隔符”——您将用于在末尾重新连接列表(使用
'.join
)以获得与原始字符串相同的空白的精确序列

您可以直接处理等距项目,也可以先提取它们:

>>> x = re.split(r'(\s+)', f)
>>> y = x[::2]
>>> y
['tanto', 'va', 'la', 'gatta', 'al', 'lardo']
然后根据需要更改
y
,例如:

>>> y[:] = [z+z for z in y]
>>> y
['tantotanto', 'vava', 'lala', 'gattagatta', 'alal', 'lardolardo']
然后重新插入并连接:

>>> x[::2] = y
>>> ''.join(x)
'tantotanto vava\nlala gattagatta alal lardolardo'

请注意,
\n
的位置与原始位置完全相同。

删除了哪些换行符?你能把这个问题展开/澄清一下吗?试着把一个字符串拆分成单词,做一些修改,然后重新组合起来。在保持原有换行符和空格不变的情况下,您的意思是b=“”.join(temp)?正确。但是不保留空格请注意,使用带参数的split与split()的不同之处在于,如果输入具有连续的空格序列,则输出也将包含空字符串。e、 g.
“两个空格”。拆分(“”)
->
['two',''spaces']
。编辑:该死,SO注释格式不会在“两个空格”中显示额外的空格