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

Python 如何替换拼接列表中的字符?

Python 如何替换拼接列表中的字符?,python,splice,Python,Splice,我现在的代码非常简单 sentence = input("Input a sentence: ") print(sentence[::2]) 我的目标是,不要让拼接列表将字符替换为其他字符,如“A” 我试过的一些东西是 print(sentence[::2].replace("A", "B") print(sentence[::2], sep = "A") print(sentence[::2], "A") 您对sep的想法是正确的,但函数是错误的 使用[::2]提取替换字符 转换为单个字

我现在的代码非常简单

sentence = input("Input a sentence: ")
print(sentence[::2])
我的目标是,不要让拼接列表将字符替换为其他字符,如“A”

我试过的一些东西是

print(sentence[::2].replace("A", "B")
print(sentence[::2], sep = "A")
print(sentence[::2], "A")

您对sep的想法是正确的,但函数是错误的

  • 使用[::2]提取替换字符
  • 转换为单个字符的列表
  • 使用所需的分隔符,
    A
逐步:

>>> s = "Hello, world"
>>> s[::2]
'Hlo ol'
>>> list(s[::2])
['H', 'l', 'o', ' ', 'o', 'l']
>>> 'A'.join(list(s[::2]))
'HAlAoA AoAl'
Q.E.D

感谢kaya3的虫子捕捉。乱七八糟的解决方案:

>>> new = 'A'.join(list(s[::2]))
>>> if len(new) < len(s):
...     new += 'A'
... 
>>> new
'HAlAoA AoAlA'
>>> 
>new='A'。加入(列表[::2]))
>>>如果len(新)小于len(s):
...     新+=“A”
... 
>>>新的
“哈拉奥拉”
>>> 

join
方法几乎可以做到这一点,但即使在长度较长的字符串上也会失败:

加入('hello'[::2]) “哈劳” >>>'A'.join('test'[::2]) “助教” 为了解决这个问题,如果长度为偶数,我们可以添加一个额外的
A

def替换_交替(s,sep):
结果=sep.join(s[::2])
如果len(s)%2==0:
结果+=sep
返回结果
下面是使用正则表达式替换成对字符的替代解决方案:

>>re.sub('(.),r'\1A','hello')
“哈劳”
>>>re.sub(“(”)、r“\1A”、“测试”)
“塔莎”

一个带有
打印的解决方案

s = 'test'
print(*s[::2], sep='A', end='\n' if len(s) % 2 else 'A\n')
印刷品:

tAsA

如果
s='tes'

tAs

如果不创建一个新字符串,这是不可能的。我如何创建一个新字符串呢?
print(“a”.join(句子[::2]))
请注意,结尾的
d
已丢失,而不是转换为
a
。end的使用非常好,op可能希望使用
os.linesep
而不是
\n
,但这可能会有点过头