Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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,我用Python作为后端创建了一个小应用程序,并作为前端进行响应。我从前端收到一些数据,如果满足条件,我想删除我收到的文本的前20个单词 @app.route("/translate", methods=["GET", "POST"]) def translate(): prompt = request.json["prompt"] max_tokens=50 prompt = re.sub(r"

我用Python作为后端创建了一个小应用程序,并作为前端进行响应。我从前端收到一些数据,如果满足条件,我想删除我收到的文本的前20个单词

@app.route("/translate", methods=["GET", "POST"])
def translate():
    prompt = request.json["prompt"]

max_tokens=50

prompt = re.sub(r"^(?:.+?\b\s+?\b){20}", "", prompt)


response = translation_response(prompt)

return {'text': response}
如何将var提示符的前20个单词翻译成python代码


提前非常感谢……

‍考虑空白是单词分词:

my_text_as_list = my_text.split()
my_new_text = ' '.join(my_text_as_list[20:])

考虑以下正则表达式:
^(?:.+?\b\s+?\b){20}
(解释:)。这将匹配前二十个单词,由任意数量的空格分隔,并从字符串开头开始。单词可以由除空格以外的任何字符组成。使用python的
re.sub
将允许您删除前二十个单词:

import re

string = """one two three     four\t five six  seven eight nine ten eleven
twelve thirteen  fourteen fifteen
sixteen seventeen
eighteen nineteen twenty twentyone  twentytwo"""

string = re.sub(r"^(?:.+?\b\s+?\b){20}", "", string)
print(string)
此示例打印
Twenty1 twentytwo
。正则表达式所做的是,从字符串开始(
^
),匹配任何(
+?
)直到下一个单词边界(
\b
),然后在1和无穷大(
\s+?
)之间的任何空白量,直到下一个单词开始(
\b
)。
(?:…){20}
使该操作重复20次。如果图案无法匹配,则不会删除任何内容。此外,正则表达式可能会给您带来两个问题,而不是一个问题,因此请小心


对评论的反应:

max_令牌=50
而len(string)>max_令牌:
match=re.match(r.“+?\b\s+?\b”,字符串)
如果不匹配:中断
nextpos=match.span()[1]
如果nextpos==-1:中断
string=string[nextpos:]
打印(字符串,len(字符串))
输出:
1819202212122245

这将删除单词,直到只剩下一个单词,或者字符串长度小于或等于max_标记

如果要在此之前停止该单词:

while len(string)>max_令牌:
match=re.match(r.“+?\b\s+?\b”,字符串)
如果不匹配:中断
nextpos=match.span()[1]
如果len(string)-nextpos
输出:
17\neighten 19221twenty55

如果要将单词减半:

while len(string)>max_令牌:
match=re.match(r.“+?\b\s+?\b”,字符串)
如果不匹配:中断
nextpos=match.span()[1]
如果nextpos==-1:中断
elif len(字符串)-下一个标记<最大标记:
nextpos=max_令牌-(len(字符串)-nextpos)
string=string[nextpos:]
打印(字符串,len(字符串))

输出:
teen\neighten一九二二一二十二二50

什么是
prompt
变量的数据类型?使用
len(prompt)
而不是
prompt.length
。这是一种“str”类型,但我得到以下错误文件“C:\Users\mario\Desktop\Vs projects\backend+frontend\volt react dashboard\api\demo\web\u app.py”,第42行,在translate if len(提示符>20)中:TypeError:“str”和“int”实例之间不支持“>”单词边界是什么?单一空间?有空白吗?如果是一个空格,并且您知道提示有20多个单词:
”.join(prompt.split()[20://code>),否则regex可能会更大appropiate@themadpsychologist
max_tokens=50
看起来像一个int,以获取以下错误文件“C:\Users\mario\Desktop\Vs projects\backend+frontend\volt react dashboard\api\demo\u web\u app.py”,第42行,在translate if len(提示>20)中:TypeError:“>”在“str”和“int”实例之间不受支持try
if len(提示)>20:
错误是因为您想检查
提示符是否超过20,并且@maromarioni不可能。那么我们如何解决这个问题呢?试试
if len(prompt)>20:
看看括号@maromarioniso我不需要if len(prompt)>20:条件?不,不再需要了。非常感谢。现在我想让他们不仅删除前20个字符,而且删除到len(提示)==max_tokens。我们该怎么办?@Marcomarinoi这并没有删除前20个字符,而是删除我理解的你在帖子中想要的前20个单词。如果你想删除前
max_tokens
words,你可以用
r^(?:+?\b\s+?\b){20}替换
r^(?:+?\b\s+?\b){+str
如果我表达错误,我深表歉意。我希望删除出现的单词,直到满足len(prompt)==max\u tokens条件,并且不删除与max\u tokens值相等的单词数。