如何解决使用Pandas和Flask输出不带省略号的完整字符串
我正在尝试使用Flask为熊猫中的每一列打印完整字符串。更具体地说,将tweet_text列缩短了,
这遵循了教程: https://www.analyticsvidhya.com/blog/2020/04/how-to-deploy-machine-learning-model-flask/
我目前得到以下输出。
created_at tweet_id tweet_text prediction
0 2020-09-02 13:39:10 1301152689217126403 smh my head at disney every time I think about... 0
1 2020-09-02 13:39:09 1301152689137487872 Tapos parehong may black diko bet kulay nila 1
2 2020-09-02 13:39:09 1301152688898363392 RT @SmokingSkills_: Indian army yesterday only... 0
3 2020-09-02 13:39:09 1301152688286183428 RT @AmonAmarthBand: The longship burst into fl... 0
4 2020-09-02 13:39:09 1301152688202231811 RT @VANTEMETAL: no hate to on but she ain’t bl... 1
如果我使用pd.set_option('display.max_colwidth',1000)
,结果会更糟。
created_at ... prediction
0 2020-09-02 13:50:52 ... 1
1 2020-09-02 13:50:52 ... 0
2 2020-09-02 13:50:52 ... 0
3 2020-09-02 13:50:52 ... 0
4 2020-09-02 13:50:52 ... 0
app.py
# Flask connection
from flask import Flask,render_template,request,redirect,url_for
from joblib import load
from get_tweets import get_related_tweets
pipeline = load('text_classification.joblib')
def requestResults(name):
tweets = get_related_tweets(name)
tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
data = str(tweets.prediction.value_counts()) + '\n\n'
return data + str(tweets)
app = Flask(__name__)
# Render default webpage
@app.route('/')
def home():
return render_template('home.html')
# When post method detected,redirect to success function
@app.route('/',methods=['POST','GET'])
def get_data():
if request.method == 'POST':
user = request.form['search']
return redirect(url_for('success',name=user))
# Get data for requested query
@app.route('/success/<name>')
def success(name):
return '<xmp>' + str(requestResults(name)) + ' </xmp> '
# Start the Flask server
app.run(debug=True)
get_tweets.py
# Setup tweepy to access Twitter API
import tweepy
import time
import pandas as pd
#pd.set_option('display.max_colwidth',1000)
authentication = tweepy.OAuthHandler(api_key,api_secret_key)
authentication.set_access_token(access_token,access_token_secret)
api = tweepy.API(authentication,wait_on_rate_limit=True)
def get_related_tweets(text_query):
tweets_list = []
count = 50
try:
for tweet in api.search(q=text_query,count=count):
print(tweet.text)
tweets_list.append({'created_at': tweet.created_at,'tweet_id': tweet.id,'tweet_text': tweet.text})
return pd.DataFrame.from_dict(tweets_list)
except BaseException as e:
print('failed on_status,',str(e))
time.sleep(3)
解决方法
我发现通过str(df)将pandas DataFrame转换为字符串会限制每列的宽度。通过df.to_string()进行的转换不受此限制,因此无需使用省略号。
def requestResults(name):
tweets = get_related_tweets(name)
tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
data = str(tweets.prediction.value_counts()) + '\n\n'
return data + tweets.to_string()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。