我是Python面临问题的新手:如何在现有字符串中插入一些字段?
例如,假设我从任何包含以下内容的文件中读取了一行:
line = "Name Age Group Class Profession"
Run Code Online (Sandbox Code Playgroud)
现在我必须在Class字段之前的同一行中插入第3个Field(Group)3次.这意味着输出行应该是:
output_line = "Name Age Group Group Group Group Class Profession"
Run Code Online (Sandbox Code Playgroud)
我可以轻松地检索第三个字段(使用split
方法),但请告诉我插入字符串的最简单方法?
bgp*_*ter 121
经常咬新Python程序员,但其他海报还没有做出明确的重要一点是,在Python中的字符串是不可变的-你不能永远改变他们的地方.
在使用Python中的字符串时,您需要重新训练自己,而不是思考"如何修改此字符串?" 相反,你正在思考"我怎么能创建一个新的字符串,其中包含一些我已经获得过的片段?"
小智 92
为了解决这个问题的未来"新手",我认为快速回答将适合这个问题.
就像bgporter所说:Python字符串是不可变的,因此,为了修改字符串,你必须使用你已经拥有的部分.
在以下示例中,我插入'Fu'
到'Kong Panda'
,以创建'Kong Fu Panda'
>>> line = 'Kong Panda'
>>> index = line.find('Panda')
>>> output_line = line[:index] + 'Fu ' + line[index:]
>>> output_line
'Kong Fu Panda'
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我使用索引值将字符串"切片"为2个子字符串:1包含插入索引之前的子字符串,另一个包含其余字符串.然后我只是在两者之间添加所需的字符串,然后我们在另一个字符串中插入了一个字符串.
Python的切片表示法有一个很好的答案来解释字符串切片的主题.
小智 16
我知道这是malapropos,但恕我直言的简单方法是:
def insert (source_str, insert_str, pos):
return source_str[:pos]+insert_str+source_str[pos:]
Run Code Online (Sandbox Code Playgroud)
line='Name Age Group Class Profession'
arr = line.split()
for i in range(3):
arr.insert(2, arr[2])
print(' '.join(arr))
Run Code Online (Sandbox Code Playgroud)
我的 DNA 分配也有类似的问题,我使用 bgporter 的建议来回答它。这是我创建一个新字符串的函数...
def insert_sequence(str1, str2, int):
""" (str1, str2, int) -> str
Return the DNA sequence obtained by inserting the
second DNA sequence into the first DNA sequence
at the given index.
>>> insert_sequence('CCGG', 'AT', 2)
CCATGG
>>> insert_sequence('CCGG', 'AT', 3)
CCGATG
>>> insert_sequence('CCGG', 'AT', 4)
CCGGAT
>>> insert_sequence('CCGG', 'AT', 0)
ATCCGG
>>> insert_sequence('CCGGAATTGG', 'AT', 6)
CCGGAAATTTGG
"""
str1_split1 = str1[:int]
str1_split2 = str1[int:]
new_string = str1_split1 + str2 + str1_split2
return new_string
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
186871 次 |
最近记录: |