“编写转换功能,该功能作为参数接收字符串,原始短语和目标短语的列表。作为该功能的结果,原始短语到目标短语如果原始短语在列表的给定元素中出现多次,则应在每次出现时都将其转换。 此外,在具有偶数索引的列表的元素中,所有大写字母都应保留 转化为小,小转化为大。 该函数返回所做的转换次数和对列表单元格所做的更改应保存。”
我的代码:
def conversion(list, original, target):
for i in list:
if original in list[i]:
list[i] = [word.replace(original, target) for word in list]
#if (i+1)%2==0:
list1=['Alex and John', 'Alex and Adam and Alexander', 'Adam has a dog', 'YEllow car']
original1='Alex'
target1='Adam'
result=conversion(list1, original1, target1)
print(result)
结果应如下:
'Adam and John', 'aDAM AND aDAM AND aLEXANDER', 'Adam has a dog', 'yeLLOW CAR'
2
我收到此错误:
TypeError:列表索引必须是整数或切片,而不是str
答案 0 :(得分:1)
请检查此解决方案。 在这里,我仅将单词“ Alex”的完全匹配替换为“ Adam”。因此,“ Alex”将更改为“ Adamander”,但“ Alexander”将不会更改为“ Adamander”。
import re
def conversion(li, original, target):
emp_str = []
for index, each in enumerate(li):
sub_str = re.sub(r'(?<![\w\d])%s(?![\w\d])' % original, target, each)
final_str = sub_str.swapcase() if index % 2 != 0 else sub_str
emp_str.append(final_str)
return emp_str
list1=['Alex and John', 'Alex and Adam and Alexander', 'Adam has a dog', 'YEllow car']
original1='Alex'
target1='Adam'
result=conversion(list1, original1, target1)
print(result)
我的输出是:[' Adam and John',' aDAM AND aDAM AND aLEXANDER','Adam has a dog','yeLLOW CAR'] >
在这里, aLEXANDER 不会更改为 aDAMANDER ,因为我们匹配的是确切的单词“ Alex”。
答案 1 :(得分:0)
您的功能必须进行以下更改,
def conversion(list, original, target): for i in range(len(list)): if original in list[i]: list[i] = list[i].replace(original, target)
那么结果将是: 清单1: [“亚当和约翰”,“亚当和亚当和亚当ander”,“亚当有狗”,“黄车”]
答案 2 :(得分:0)
您在这里有几个错误,首先,因为要覆盖原始函数列表,所以将python函数的名称用作变量的名称不是一个好习惯。
要将给定字符串的所有大写字符转换为小写,将所有小写字符转换为大写,可以使用Python String swapcase()函数
您的代码应类似于:
def conversion(list_, original, target):
for i in range(len(list_)):
if original in list_[i]:
list_[i] = list_[i].replace(original,target)
if i % 2 != 0:
list_[i] = list_[i].swapcase()
list1=['Alex and John', 'Alex and Adam and Alexander', 'Adam has a dog', 'YEllow car']
original1='Alex'
target1='Adam'
conversion(list1, original1, target1)
print(list1)
输出:
['Adam and John', 'aDAM AND aDAM AND aDAMANDER', 'Adam has a dog', 'YEllow car']