انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: Ma$oud در 20 اسفند 1394، 10:07 قظ
-
سلام دوستان، با چه دستوری میشه مثلا کلمه های موجود توی تگ اچتمل رو کشید بیرون؟ :o
مثال:
<p>hello</p>
<p>hey</p>
<p>masoud</p>
<p>Ma$oud</p>
<p>!!!&</p>
بعد خروجی یه همچین چیزی بشه:
hello
hey
masoud
Ma$oud
!!!&
-
راه های مختلفی براش هست
فرض کن محتویات رو در یه فایل به نام a.txt
ذخیره کردی . یه دفعه تگ های سمت راست رو حذف کن و یه دفعه سمت چپ
sed -i 's/<\/p>//g' a.txt
sed -i 's/<p>//g' a.txt
اینجوری خروجی روی همون فایل ذخیره میشه
-
راه های مختلفی براش هست
فرض کن محتویات رو در یه فایل به نام a.txt
ذخیره کردی . یه دفعه تگ های سمت راست رو حذف کن و یه دفعه سمت چپ
sed -i 's/<\/p>//g' a.txt
sed -i 's/<p>//g' a.txt
اینجوری خروجی روی همون فایل ذخیره میشه
این در صورتیه که فقط بخوایم تگ <p> رو حذف کنیم، حالا اگه مثلا بخوام از یه فایل اچتمل که همه جور تگ توش هست اطلاعاتو بکشم بیرون چی؟
یه دستوری که بگه مثلا فقط کلماتی که اولشون برای مثال: ">
و آخرشون </a
رو نشون بده ;D
-
با تشکر از دوست عزیزمون .
با پایتون هم اینجوری میشه (البته یکمی طولانی شد) :
import re
import string
f=raw_input('Enter the full address of file : ')
file=open(f,'r')
a=file.read()
file.close()
result = re.findall(r'>.*<',a)
result=string.join(result)
result = re.sub(r'[<|>]','',result)
result=string.split(result)
s=len(result)
for i in range(s) : print result[i] ;
-
ممنون آقا کوشا، فقط از اونجایی که من تقریبا اصلا پایتون بلد نیستم ;D این قسمت
<p>
و </p>
رو به صورت یه متغیری چیزی که من بتونم عوضش کنم درستش کنی؟ و اون قسمت متن رو بشه آدرس فایلو داد؟
-
کد بالا رو ویرایش کردم تا بتونید آدرس فایل رو بهش بدید .
-
یه regex (https://regex101.com/r/yO6lP1/1) نوشتم ولی نمیدونم چرا با sed جواب نمیده، کسی نمیدونه چرا؟
ولی اینی که پیدا کردم کار میکنه:
sed -i -e 's/<[^>]*>//g' html.txt
-
این رجکسی که شما نوشتی کل خط رو شامل میشه به همین خاطر چیزی باقی نمیمونه.
شما نوشتی:
sed -r 's/<\/*.+?>//g' html
اون کاراکتر . رجکستون رو خراب کرده اینجا، درسته که سعی کردید مشکل حریص بودن رجکس رو با ?+ حل کنید ولی خب کاراکتر . میتونه شامل < هم بشه و اینجا به مشکل میخورید.
بهترین کار استفاده از کتابخانه bs4 در پایتون هستش، اما به هر حال رجکس درست همونطور هم که خودتون اشاره کردید این هستش:
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ cat html
<p>hello</p>
<p>hey</p>
<p>masoud</p>
<p>Ma$oud</p>
<p>!!!&</p>
ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp$ sed -r 's/<[^>]+>//g' html
hello
hey
masoud
Ma$oud
!!!&